反向代理:Nginx Proxy Manager
反向代理作为一种重要的网络服务,能有效地将所有传入的网络请求统一转发到相应的后端服务器。通过这种方式,我们不仅能通过不同的域名方便地访问各个 Docker 服务,而且还能避免记忆复杂的端口号,极大地简化了网络管理。
更为关键的是,反向代理为我们的网络连接提供了 HTTPS 加密,这是数据安全传输的重要保障。未加密的 HTTP 连接像是在网络世界中无防备地暴露,极易受到窥探和劫持。通过配置反向代理,所有的传入流量都将被加密处理,有效防止数据被识别和篡改的风险。
市面上常见的反向代理工具有多种,包括 Nginx Proxy Manager、nginxWebUI、Caddy 和 Lucky 等。
Nginx Proxy Manager
Nginx Proxy Manager 提供了一个的图形界面,方便用户管理反向代理和 SSL 证书。它的 SSL 证书有效期长达三个月,并支持自动续期。由于国内家用宽带常常不支持开放 80 和 443 端口,所以这里推荐使用一个修改版的 Nginx Proxy Manager 而非官方容器,同时也不建议使用 Caddy。如果你对 Nginx Proxy Manager 还不够熟悉,也可以尝试使用国内开发的 nginxWebUI,它也提供了图形化配置、SSL 证书申请和自动续签等功能。
推荐通过 Docker Compose 部署 Nginx Proxy Manager,详情请见 Docker Compose 部署教程。以下是 Docker Compose 配置示例:
version: "3.8"
services:
app:
image: "jlesage/nginx-proxy-manager:latest"
container_name: nginx-proxy-manager
restart: unless-stopped
ports:
- "9001:8080"
- "9002:8181"
- "9003:4443"
volumes:
- /volume1/docker/nginx-proxy-manager/config:/config
要访问管理后台,请前往 localhost:9002
。默认的登录账户是 admin@example.com
,密码是 changeme
。系统会在你首次登录时提示你更改这些凭证。
部署了反向代理后,只需要在路由器上开放 9003
端口(或你自定义的其他端口),就可以实现流量的转发,无需在公网上开放其他端口。你可以通过 CNAME 记录,将自定义域名 xxx.newzone.top
解析到你的家庭 DDNS 域名 yyy.newzone.top
。这样,通过访问 xxx.newzone.top:9003
,你就能直接访问指定的服务,并享受到自动部署的 SSL 加密带来的安全保护。若需要切换至其他服务,只需更改域名 xxx.newzone.top:9003
中的 xxx
部分即可。
Caddy
Caddy 提供了更为简便的配置方法。但要注意,Caddy v2 默认使用 http-01 方式申请 HTTPS 证书,这要求你的域名能够通过公网的 80/443 端口进行所有权验证。在国内环境下,你可能需要手动配置证书。可以选择通过 Certbot 免费申请证书,或在阿里云、腾讯云等平台申请有效期为一年的免费证书。
以下是通过 Docker 部署 Caddy 的配置文件:
version: "3.9"
services:
caddy:
image: caddy:latest
container_name: caddy
restart: unless-stopped
ports:
- "9080:80"
- "9443:443"
- "9443:443/udp"
volumes:
- /volume1/docker/caddy/Caddyfile:/etc/caddy/Caddyfile
- /volume1/docker/caddy/site:/srv
- /volume1/docker/caddy/caddy_data:/data
- /volume1/docker/caddy/caddy_config:/config
volumes:
caddy_data:
caddy_config:
swag (letsencrypt)
swag(原名为 letsencrypt,但与 Let's Encrypt™ 团队无关),设置了一个 Nginx Web 服务器和反向代理,支持 php 和一个内置的 certbot 客户端,可自动执行免费的 SSL 服务器证书生成和更新过程(Let's Encrypt™ 和 ZeroSSL)。它还包含用于入侵防御的 fail2ban。
我原本想用它来管理证书,使用后才发现它带了过多功能,因此放弃了。以下配置仅作记录。
version: "3"
services:
swag:
image: lscr.io/linuxserver/swag:latest
container_name: swag
cap_add:
- NET_ADMIN
environment:
- PUID=1026
- PGID=100
- TZ=Asia/Shanghai
- URL=newzone.top
- VALIDATION=dns
- SUBDOMAINS=wildcard #希望证书覆盖的子域(逗号分隔,没有空格),即。www,ftp,cloud。对于通配符证书,请将其完全设置为 wildcard(通配符证书仅通过 dns 验证可用)
#- CERTPROVIDER= #ZeroSSL
- DNSPLUGIN=aliyun #/config/dns-conf
#- PROPAGATION= #覆盖 dns 插件的默认传播时间(以秒为单位)
- EMAIL= #用于证书过期通知的可选电子邮件地址
- ONLY_SUBDOMAINS=false #如果您只想获取某些子域的证书,而不获取主域的证书(主域可能托管在另一台计算机上,无法验证),请将其设置为 true
- EXTRA_DOMAINS= #optional
- STAGING=false #测试时设为真
volumes:
- /volume1/docker/swag/config:/config
ports:
#- 443:443
- 28780:80 #optional
restart: unless-stopped
无论选择 Nginx Proxy Manager 还是 Caddy,你都可以轻松地部署和管理你的反向代理服务。这将为你的网络环境提供更高的数据安全性和便捷的访问管理。希望这些信息能帮助你更好地利用反向代理技术,为你的网络环境带来显著的改善。如果你在部署或使用过程中遇到任何问题,欢迎在评论区留言交流,我们可以一起探讨解决方案。
- 0
- 0
- 0
- 0
- 0