还在手动修改 Nginx 配置文件,为每个网站和应用设置反向代理而头疼吗?是时候试试 Nginx Proxy Manager(NPM) 了。

Nginx Proxy Manager

NPM 提供基于 Web 的图形化管理界面,让你无需手写 Nginx 配置,就能管理反向代理、SSL 证书、访问控制和重定向规则。它简单易用,适合个人开发者、家庭实验室和小型团队。

版本提示: 本文截图和示例来自 2025 年 5 月,软件界面和镜像版本可能已经更新。请以官方最新稳定版为准。生产环境不建议长期使用 latest,应固定具体版本并定期升级。

项目地址:https://github.com/NginxProxyManager/nginx-proxy-manager

一、Nginx Proxy Manager 的优势

  • 可视化管理: 通过 Web 界面管理反向代理、SSL 证书和重定向;
  • 简化配置: 填写表单即可完成常见代理配置;
  • 自动 SSL 证书: 集成 Let’s Encrypt,支持申请和续期证书;
  • 访问控制: 可为内部服务添加用户认证或 IP 限制;
  • Docker 部署: 一条 Compose 命令即可启动;
  • 免费开源: 可以自行部署和维护。

二、使用 Docker 部署

1. 准备环境

开始前需要准备:

  • 一台已经安装 Docker 和 Docker Compose 的服务器;
  • 服务器防火墙允许访问 80 和 443 端口;
  • 一个已经解析到服务器公网 IP 的域名。

如果还没有安装 Docker,可以参考:

一步到位!Docker 全家桶一键安装,省时省力,马上上手

本文使用雨云服务器演示,注册可获得首月优惠券:https://www.rainyun.com/xiaoming_。已有服务器的话可以跳过这一步;本文包含推广链接,不影响实际价格。

2. 创建 Compose 文件

新建目录并创建 docker-compose.yml:

1
2
3
4
5
6
7
8
9
10
11
services:
app:
image: jc21/nginx-proxy-manager:latest
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "8181:81"
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt

端口映射中,冒号左边的端口可以在宿主机上修改。例如把 8181:81 改成 8080:81,之后通过 8080 端口访问管理界面。

注意: 如果宿主机上的 80 或 443 已被其他 Web 服务占用,NPM 会启动失败。请先停止冲突服务,或调整端口并重新规划入口。

3. 启动服务

1
docker compose up -d

启动 Nginx Proxy Manager

4. 登录管理界面

在浏览器打开:

1
http://你的服务器IP:8181

NPM 登录界面

首次登录后,系统会要求修改邮箱和密码。

修改管理员信息

设置新密码

安全提示: 默认密码必须立即修改。管理端口 8181 不建议直接暴露到公网,优先使用防火墙白名单、VPN 或 Cloudflare Access 等方式限制访问。

三、配置第一个反向代理

准备工作

  1. 安装并启动 NPM;
  2. 准备一个域名,例如 example.com;
  3. 将域名的 A 记录解析到 NPM 所在服务器的公网 IP。

添加 Proxy Host

登录 NPM,依次点击 Hosts → Proxy Host → Add Proxy Host。

进入 Proxy Host

添加 Proxy Host

填写代理信息:

  • Domain Names: 例如 app.example.com;
  • Scheme: 根据后端服务选择 http 或 https;
  • Forward Hostname / IP: 后端服务地址;
  • Forward Port: 后端服务端口;
  • Cache Assets: 需要缓存静态资源时开启;
  • Block Common Exploits: 建议开启;
  • Websockets Support: 后端使用 WebSocket 时开启,例如部分聊天、流媒体和管理面板应用。

填写代理配置

配置 SSL

切换到 SSL 标签页:

  • 选择 Request a new SSL Certificate;
  • 填写用于接收证书通知的邮箱;
  • 同意 Let’s Encrypt 服务条款;
  • 按需开启 Force SSL;
  • 按需开启 HTTP/2 Support。

配置 SSL

保存后,通过域名访问后端服务。

反向代理配置完成

通过域名访问服务

四、常用功能

  • 自定义 Nginx 配置: 为特殊应用追加高级配置;
  • Access Lists: 使用账号密码限制访问;
  • Redirection Hosts: 配置域名跳转;
  • Streams: 转发 TCP、UDP 流量;
  • SSL Certificates: 集中管理证书和自动续期。

五、上线前的安全清单

  1. 修改默认管理员账号和密码;
  2. 限制管理界面端口,不要直接裸露到公网;
  3. 固定镜像版本,升级前先备份 data 和 letsencrypt 目录;
  4. 只给确实需要 WebSocket 的服务开启 WebSocket;
  5. 定期检查 NPM、Docker 和证书续期状态;
  6. 对外服务开启 HTTPS,并按需启用 Force SSL。

六、总结

Nginx Proxy Manager 把常见的反向代理和证书管理操作集中到了 Web 界面中,适合不想反复手写 Nginx 配置的用户。部署本身并不复杂,真正需要重视的是管理入口安全、端口冲突、镜像版本和数据备份。

如果你正在管理多个自建服务,不妨用 NPM 统一入口,让反向代理配置更直观一些。