插件窝 干货文章 如何使用Nginx Proxy Manager实现HTTPS协议下的反向代理

如何使用Nginx Proxy Manager实现HTTPS协议下的反向代理

配置 Nginx 证书 Proxy 449    来源:    2025-04-11

使用Nginx Proxy Manager实现HTTPS反向代理指南

Nginx Proxy Manager (NPM) 是一个基于Web的Nginx管理界面,可以轻松配置反向代理、SSL证书等。以下是实现HTTPS反向代理的详细步骤:

1. 安装Nginx Proxy Manager

Docker安装方式(推荐)

docker run -d \
  --name=nginx-proxy-manager \
  -p 80:80 \
  -p 81:81 \
  -p 443:443 \
  -v /path/to/data:/data \
  -v /path/to/letsencrypt:/etc/letsencrypt \
  --restart unless-stopped \
  jc21/nginx-proxy-manager:latest

2. 初始设置

  1. 访问管理界面:http://服务器IP:81
  2. 默认登录凭据:
    • Email: admin@example.com
    • Password: changeme
  3. 首次登录后立即修改密码

3. 配置HTTPS反向代理

步骤1:添加代理主机

  1. 点击"Hosts" > "Proxy Hosts" > "Add Proxy Host"
  2. 填写以下信息:
    • Domain Names: 你的域名(如example.com
    • Scheme: httphttps(根据后端服务)
    • Forward Hostname/IP: 后端服务器IP或主机名
    • Forward Port: 后端服务端口
    • 其他选项保持默认或根据需要调整

步骤2:配置SSL证书

  1. 在代理主机设置中,切换到"SSL"选项卡
  2. 选择以下选项之一:

选项A:使用Let's Encrypt自动获取证书

  • 勾选"Request a new SSL Certificate"
  • 填写有效的邮箱地址
  • 勾选"Use a DNS Challenge"(如果需要DNS验证)
  • 勾选"Force SSL"和"HTTP/2 Support"(推荐)
  • 点击"Save"申请证书

选项B:使用已有证书

  • 上传你的证书文件(.crt和.key)
  • 或粘贴证书内容到对应字段

4. 高级配置(可选)

自定义Nginx配置

在代理主机设置的"Advanced"选项卡中,可以添加自定义Nginx配置:

# 示例:添加自定义header
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;

重定向HTTP到HTTPS

  1. 点击"Hosts" > "Redirection Hosts"
  2. 创建从http://example.comhttps://example.com的重定向

访问控制

在"Access Lists"中可以设置基本认证或IP限制

5. 验证配置

  1. 访问你的域名(如https://example.com
  2. 检查浏览器地址栏的锁图标确认SSL证书有效
  3. 使用SSL检测工具(如SSL Labs)验证配置

常见问题解决

证书申请失败

  • 确保域名已正确解析到服务器
  • 检查防火墙是否开放80和443端口
  • 如果使用DNS验证,确保正确配置DNS API密钥

502 Bad Gateway

  • 检查后端服务是否运行
  • 确认Forward Hostname/IP和Port正确
  • 查看NPM日志:docker logs nginx-proxy-manager

混合内容警告

  • 确保网页内所有资源(CSS、JS、图片)都使用HTTPS链接
  • 可以添加以下内容安全策略头: nginx add_header Content-Security-Policy "upgrade-insecure-requests";

通过以上步骤,你应该能够成功配置HTTPS反向代理。Nginx Proxy Manager简化了Nginx的复杂配置,特别是SSL证书的管理,使得设置安全的反向代理变得更加容易。