外观
Nginx Proxy Manager:图形化反向代理
给 Nginx 加一个界面:添加域名、指向后端服务、申请证书,几步完成,不用手写配置文件。
适合谁
服务数量超过三四个,开始记不住端口号,或者需要用 HTTPS 访问。
反向代理不会让后端变安全
它只负责转发。后端应用如果有弱密码或已知漏洞,通过代理一样能被利用。对外开放之前,逐个确认后端应用本身有认证且版本较新。
部署
yaml
services:
npm:
image: jc21/nginx-proxy-manager:latest
container_name: npm
restart: unless-stopped
ports:
- "80:80"
- "443:443"
- "81:81"
volumes:
- /vol1/docker/npm/data:/data
- /vol1/docker/npm/letsencrypt:/etc/letsencrypt81 是管理界面端口,不要把它暴露到公网。首次登录后立刻修改默认账号密码。
证书怎么申请
两种验证方式:
- HTTP 验证:需要 80 端口能从公网访问。
- DNS 验证:通过域名服务商的 API 完成,不需要暴露任何端口,内网服务也能拿到受信任的证书。推荐这种。
申请后确认自动续期任务正常,并配置续期失败的告警——证书过期是典型的静默失败。
数据与备份
data 目录包含所有代理配置和数据库,letsencrypt 目录包含证书。两个都要备份,否则重建时要重新申请所有证书。
已知坑
- 80/443 端口被其他服务占用时无法启动,先用
ss -tlnp确认。 - 后端填写 NAS 自身 IP 时,注意容器网络下
127.0.0.1指的是容器自己,见网络模式。 - 改配置后若不生效,先确认浏览器和 DNS 缓存。