问小白 wenxiaobai
资讯
历史
科技
环境与自然
成长
游戏
财经
文学与艺术
美食
健康
家居
文化
情感
汽车
三农
军事
旅行
运动
教育
生活
星座命理

反向代理:Nginx Proxy Manager

创作时间:
作者:
@小白创作中心

反向代理:Nginx Proxy Manager

引用
1
来源
1.
https://newzone.top/services/dockers-on-nas/reverse-proxy.html

反向代理作为一种重要的网络服务,能有效地将所有传入的网络请求统一转发到相应的后端服务器。通过这种方式,我们不仅能通过不同的域名方便地访问各个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,你都可以轻松地部署和管理你的反向代理服务。这将为你的网络环境提供更高的数据安全性和便捷的访问管理。希望这些信息能帮助你更好地利用反向代理技术,为你的网络环境带来显著的改善。如果你在部署或使用过程中遇到任何问题,欢迎在评论区留言交流,我们可以一起探讨解决方案。

© 2023 北京元石科技有限公司 ◎ 京公网安备 11010802042949号