Nginx Proxy Manager,是一个强大的反向代理开源项目,最近弃了各种国内面板,把反代的任务都交给了他,使用过程中曾经遇到一个问题,记录备忘。
使用官方的docker-compose.yml 搭建后,反代本机其他docker容器只能通过Docker的默认地址172.17.0.1进行反代,反代非docker服务只能反代真实IP,若使用127.0.0.1或localhost或主机名进行反向代理,则会报错502 Bad Gateway。
问题复现
1.官方推荐的docker-compose.yml
version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '81:81' - '443:443' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt
2.反代本机其他docker项目,红框内只有填172.17.0.1才能正常使用,填写常规的127.0.0.1或localhost或主机名,则会报错。
3.反代本机其他非docker项目,红框内只有填真实IP地址才能正常使用,填写常规的127.0.0.1或localhost或主机名,也会报错。
解决方法
排除防火墙因素外,最简单的解决方法,修改官方docker-compose.yml 如下:
version: '3' services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped network_mode: host volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt
1.设定网络类型为host
2.删除宿主端口和容器端口的映射,不然容器会运行失败。
这样就可以正常使用127.0.0.1或localhost或主机名进行反代了。
文章评论
大佬牛逼,一下就点到问题了,小白我还得多学习啊😂
6666666