反代面板 Nginx Proxy Manager:证书、域名与端口一次配好
自建服务一多,Nginx 配置就成了负担:每个服务一段 server 块,证书续期要记。
NPM 把这些做成了表单:域名、目标地址、证书、访问控制,点几下就完成。
先说结论
统一由 NPM 管 80/443,后端服务只监听内网端口。 这样证书与入口只有一处。
- 后端服务不要单独映射公网端口
- 证书用 DNS 挑战更稳,避免 80 端口被占
- WebSocket 要在高级设置里加 Upgrade 头
- 访问列表可用于临时保护后台
先把问题说清楚
NPM 本质是 Nginx 的可视化封装,配置最终落成 nginx.conf。理解这一点,排查时就知道去哪看日志。
常见故障是「502 Bad Gateway」:多半是容器网络不通或后端端口写错。
具体怎么做
按顺序执行,每步都验证完再进下一步:
- 部署 NPM,映射 80/443 与管理端口
- 为每个服务建 Proxy Host:域名 → 容器名:端口
- 申请证书并开启强制 HTTPS
- WebSocket 服务加 Upgrade/Connection 头
- 对管理后台加访问列表或 IP 白名单
参数与成本对照
把关键数值摊开,方便判断该选哪条路:
| 配置项 | 建议 | 说明 |
|---|---|---|
| 证书 | DNS-01 挑战 | 不依赖 80 端口 |
| HTTP/2 | 开启 | 提升加载性能 |
| 访问列表 | 后台必开 | 基础认证或 IP 白名单 |
| 日志 | 保留 7 天 | 排查 502 用 |

几个容易踩的坑
下面这些是最常见的错误做法:
- 后端写 127.0.0.1:容器内 127 不是宿主机
- 忘记 WebSocket 头:实时功能一直转圈
- 443 被其他服务占用:证书申请失败
- 管理端口直接暴露公网
最后补两句
反代的作用是「统一入口」,别让每个服务都自己开一个公网端口。
工具是手段,理解机制才是能力。命令记不住没关系,知道「该看什么」就够了。
评论 (3)
照着做了一遍,确实少走弯路。第二步最容易漏,建议顺手加个检查清单。
比「一键脚本」有用多了,知道为什么比知道怎么做重要。
补充一句:不同版本行为会变,动手前先确认自己的版本号。
发表评论