Nginx Docker容器无法反向代理同网络下Gogs Docker容器问题求助
问题根源
Nginx反向代理的目标地址配置错误:你配置中proxy_pass http://localhost:3000的localhost指向的是Nginx容器自身的本地环回地址,Nginx容器内没有任何服务监听3000端口,所以返回502错误。
你访问app.test.local:3000能正常打开,是因为这个请求走的是宿主机的端口映射,直接把流量转发到了Gogs容器,和Nginx没有关系。
修复方法
第一步:修改Nginx配置
编辑你挂载的Nginx配置文件default.conf,将location /块的proxy_pass参数修改为:
location / { proxy_pass http://gogs:3000; }
说明:Nginx和Gogs容器都加入了同一个自定义桥接网络
testserver-network,Docker内置DNS服务支持直接通过容器名解析到对应容器的内网IP,这里的gogs就是Gogs容器的名称,3000是Gogs容器内部监听的服务端口,容器间通信不需要走宿主机的端口映射。
第二步:重载Nginx配置
执行以下命令让修改后的配置生效:
docker exec proxy nginx -s reload
可选优化
如果不需要直接通过宿主机3000端口访问Gogs,可以删除Gogs的docker-compose.yml中ports配置下的- 3000:3000行,避免端口冲突,同时减少暴露的服务端口提升安全性。
配置验证
修复完成后访问http://app.test.local即可正常打开Gogs服务。
内容的提问来源于stack exchange,提问作者Cybeaer
相关产品推荐
相关产品推荐

