Nerdctl环境下Nginx Proxy Manager目标可达却返回502错误
Nginx Proxy Manager 解析容器主机失败的排查方案
1. 核对容器名称与代理配置的主机名
日志明确显示hello could not be resolved,先做两件事:
- 打开
/data/nginx/proxy_host/2.conf,确认代理目标的主机名是hello - 执行
docker ps查看helloworld-http容器的实际名称,确认它确实叫hello。很多时候容器名是helloworld-http或随机生成的,你在代理容器里能访问hello可能是手动加了hosts或临时用了IP,但Nginx配置里的主机名和实际容器名不匹配。
2. 测试Nginx容器内的DNS解析能力
进入Nginx Proxy Manager容器,直接测试hello的解析:
docker exec -it <nginx-proxy-manager容器ID/名称> sh nslookup hello
如果解析失败,说明Nginx进程的DNS配置有问题,重启容器让它重新加载网络DNS:
docker restart <nginx-proxy-manager容器ID/名称>
3. 确认桥接网络的DNS别名规则
Docker桥接网络里,容器的DNS别名默认是容器名称,或docker-compose里的服务名:
- 如果是单独启动的容器,必须用
docker run --name hello ...指定名称 - 如果是docker-compose部署,要确保服务名是
hello
临时可以把代理配置里的主机名换成helloworld-http容器的IP(用docker inspect <容器ID> | grep IPAddress获取),如果能正常访问,就确定是DNS解析的问题。
4. 强制重载Nginx配置
有时候修改代理配置后,Nginx Proxy Manager没自动重载配置,手动触发:
docker exec -it <nginx-proxy-manager容器ID/名称> nginx -s reload
5. 检查容器间通信策略
确认桥接网络允许容器间通信:
docker inspect <你的桥接网络名称> | grep enable_icc
如果输出是"enable_icc": false,修改网络配置:
docker network update --icc=true <你的桥接网络名称>
内容的提问来源于stack exchange,提问作者QueueHammer
相关产品推荐
相关产品推荐

