Azure应用容器环境中Nginx无法解析Symfony-app主机名求助
问题排查与解决方案
核心问题分析
你的nginx容器能通过IP访问symfony-app,但主机名解析到错误IP,说明容器间的DNS服务发现配置存在问题,而非网络连通性故障。
排查与修复步骤
1. 确认容器服务名称一致性
如果使用Docker Compose部署多容器,检查docker-compose.yml中symfony-app的服务名称是否为symfony-app,确保nginx配置中使用的主机名与该服务名完全一致(大小写敏感)。
示例正确的Compose配置片段:
services: nginx: image: nginx:latest ports: - "80:80" symfony-app: image: your-symfony-image:latest ports: - "9000:9000"
2. 检查容器内部DNS解析
在nginx容器内执行nslookup symfony-app,查看解析出的IP是否与symfony-app的实际IP(100.100.0.116)一致:
root@nginx--dxl9wvh-7b456fdcd-zpqdq:/# nslookup symfony-app
如果解析结果仍然是错误IP,说明Azure内部DNS服务未正确同步容器信息,可尝试:
- 重启两个容器(优先重启symfony-app,再重启nginx)
- 检查Azure App Service实例是否处于正常运行状态,无资源配额不足等问题
3. 临时绕过DNS解析(测试用)
在nginx容器的/etc/hosts中手动添加IP映射,验证是否能通过主机名连通:
echo "100.100.0.116 symfony-app" >> /etc/hosts telnet symfony-app 9000
如果连通成功,说明DNS服务存在异常,可联系Azure支持排查内部DNS同步问题,或在部署脚本中自动添加hosts映射作为临时解决方案。
4. 验证容器网络配置
确保两个容器处于同一个Azure App Service实例的多容器部署中(而非独立的两个App Service),且未配置自定义隔离网络。Azure App Service多容器默认使用bridge网络,容器间应自动支持服务名称解析。
内容的提问来源于stack exchange,提问作者Fpasquer
相关产品推荐
相关产品推荐

