前言
对于现在网站来说, HTTPS 证书已经必不可少,虽然我们已经可以使用 Let’s Encrypt 获取免费证书,并且可以使用 acme.sh 快速申请、自动续期,但是每次添加新域名时仍然需要编辑 Nginx 配置文件,略有麻烦。
本文将介绍使用 Nginx Proxy Manager 设置 Nginx 反向代理,同时支持自动申请、续期 HTTPS 证书,即便在局域网内也可以使用 API 申请证书!
Nginx Proxy Manager 完全是图形界面,不懂代码也没有关系,非常适合个人使用!
主要特点:
- 漂亮的用户界面
- 轻松的反向代理设置
- 轻松配置HTTPS,内置对 Let’s Encrypt 的支持
- 提供 Docker 镜像 ,轻松部署
- 支持多用户,提供简单的访问权限设置
与 Nginx 对比
| 特性 | Nginx Proxy Manager | Nginx(手动配置) |
|---|---|---|
| 配置方式 | Web 界面管理,操作简单 | 手动编辑配置文件,灵活度高 |
| 功能性 | 基础反向代理与 SSL 管理 | 支持高级功能与复杂场景 |
| 安全性 | 更新频率较低,依赖第三方维护 | 官方定期更新,更安全可靠 |
| 错误容忍 | 错误配置可能影响整体服务 | 站点配置独立,互不影响 |
| 性能 | 对高并发请求性能有限,适合轻量应用 | 原生性能,支持高并发场景 |
| 适用场景 | 适合小型项目、无技术背景的用户 | 适合大型项目与高级用户 |
前期准备
Nginx Proxy Manager 使用 Docker 部署,因此你的服务器上需要安装 Docker 与 Docker Compose 。
如果你还未安装,可以查看:在 Debian 中安装 Docker 以及 Docker Compose
使用 Docker 安装
创建一个工作目录,然后在其中创建 docker-compose.yml 文件,填入下面的内容
1 | services: |
- 80 是网站的 80 端口
- 81 是 Nginx Proxy Manager 的管理端口
- 443 是网站的 443 端口
Nginx Proxy Manager 的数据保存在 docker-compose.yml 同目录下 .data 文件夹,证书保存在 ./letsencrypt 文件夹。
也可以自己修改路径。
由于都需要使用 80 / 443 端口,所以如果宿主机有安装 Nginx ,请先禁用
使用 docker compose 运行 Nginx Proxy Manager
1 | docker compose pull |
访问面板
启动后,访问 http://<server_ip>:81 即可打开管理面板。

默认管理员用户如下,登陆后会要求重新设置邮箱与密码
1 | Email: [email protected] |
启动后,请立即登陆面板,设置账户与密码
功能介绍
安装完成后,我们可以在顶部查看 Nginx Proxy Manager 的功能区
- Hosts: 反代站点管理
- Access Lists: 管理访问限制策略
- SSL Certificates : SSL 证书管理
- Users : 用户管理,Nginx Proxy Manager 提供简单的用户管理
- Audit Log : 日志
- Settings : 设置当请求的域名不在站点列表时的回应
申请证书
首先我们需要为域名申请证书,点击顶部的 SSL Certificates ,再点击 Add SSL Certificate
Nginx Proxy Manager 生成的证书会自动续期。
单域名证书
如果我们申请单域名证书,只需要
- 将域名解析到服务器
- Domain Names 填写需要申请证书的域名
- 填写 Let’s Encrypt 需要使用的邮箱
- 同意 Let’s Encrypt Terms of Service
- 然后点击 Save 就可以了
当然保存前可以先点击 Test Server Reachability 测试一下
申请泛域名证书
申请 ***.example.com** 泛域名证书需要修改 DNS 记录,需要通过 API 的方式申请,Nginx Proxy Manager 的支持列表非常的长,这里以 Cloudflare 为例。
首先我们需要获取 API 令牌,访问 https://dash.cloudflare.com/profile/api-tokens 点击 创建令牌,下一步中选择使用 编辑区域 DNS 对应的 使用模版。
下一步种设置具体的令牌信息:
- 令牌名称:改个用于区分的名字
- 权限:保持默认 编辑
- 区域资源: 特定区域,然后选择对应的域名
- 客户端 IP 筛选:设置可以使用令牌的 IP,可以选择 在 ,然后填写您的服务器 IP
- TTL: 令牌有效期,默认是永久有效

点击 继续以显示摘要 ,确认令牌的信息,如果没有错误,点击 创建令牌
创建后将显示 Token ,点击 Copy 复制。
只有这一次机会查看 Token 明文,无法再次查看。
然后在 Nginx Proxy Manager 中申请证书
- Domain Names 填写
*.example.com与expample.com - 填写 Let’s Encrypt 需要使用的邮箱
- 打开 Use a DNS Challenge
- DNS Provide 选择 Cloudflare
- 替换 Credential File Content 中的
token - 同意 Let’s Encrypt Terms of Service
- 点击
Save申请
成功后即会在列表中显示
添加反代站点
示例:反代管理页面
Nginx Proxy Manager 默认端口是报漏在公网中的,这很不安全,如果设置完成后取消这个端口映射,以后需要修改配置时又比较麻烦,我们可以设置一个二级域名来访问,首先解析一个二级域名例如 nginx.example.com 指向服务器。
在 Hosts > Proxy Hosts 中点击 Add Proxy Host 添加站点,管理页面的目标地址是 http://127.0.0.1:81
- Domain Names: 填写你的二级域名
- Scheme: 目标网站的协议,
http - Forward Hostname/IP: 目标网站的域名或是 IP,这里填
127.0.0.1 - Forward Port: 目标网站的端口
81 - Cache Assets: 是否启用缓存
- Block Common Exploits: 阻止常见漏洞
- Websockets Support: 是否开启 Websockets 支持
- Accessible: 设置访问限制
然后点击顶部 SSL 选择证书
- Force SSL : 是否强制使用
https://访问 - HTTP/2 Support : 是否开启 HTTP/2 支持
- HSTS Enabled : 是否开启 HSTS ,开启后用户访问过一次之后将只会使用 https 访问
- HSTS Subdomains : 子域名是否开启 HSTS
我们可以在 Advanced 中添加自定义设置,比如
1 | gzip on; |
最中将被插入在站点配置中。
如果添加 Location 段则必须包含转发转发内容。
然后使用浏览器访问 https://nginx.example.com ,如果可以成功访问,我们就可以注释掉 docker 配置文件中的管理端口了!
1 | ports: |
然后重新创建并运行 Nginx Proxy Manager 容器:
1 | docker compose down |
因为管理页面位于容器内部,所以可以使用 127.0.0.1
无法使用 127.0.0.1 反代宿主机以及宿主机上的其他 Docker 容器的服务,需要使用 ip addr show docker0 查看 docker 网络的 ip 地址,一般为 172.17.0.1, 并且其他 docker 容器的也需要设置监听到 172.17.0.1 而非 127.0.0.1 来关闭公网访问

查看配置
Nginx Proxy Manager 添加的站点的配置位于宿主机 data/nginx/proxy_host ,以数字递增的 conf 文件。
反代宿主机的静态站点
由于 Nginx Proxy Manager 需要使用 80 与 443 端口,Nginx 无法同时使用这两个端口在宿主机上设置静态站点,可以设置 Nginx 监听 172.17.0.1:8080 ,然后使用 Nginx Proxy Manager 添加指向 Nginx 的反向代理。
总结
如果你是个人用户,且主要使用 Nginx 的反向代理功能,Nginx Proxy Manager 是一个简化设置流程的理想选择,尤其在 SSL 证书配置方面更为便捷,更适合初学者,也可以在局域网内使用。
如果你需要直接使用 Nginx 提供网站服务,尤其是在生产环境中,推荐选择手动配置 Nginx,以充分发挥其性能和灵活性,可以使用 acme.sh 获取 SSL 证书,实现自动续期。
评论