You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Nginx反向代理多域名多容器遇502错误排查求助

问题排查与解决方案

针对你访问sub1.domain.de出现502 Bad Gateway错误的问题,结合你的配置和描述,以下是核心排查点及解决方法:

1. 容器名称匹配问题

检查docker-compose.yml中,对应sub1反向代理的Spring Boot服务名称是否为container1:

  • Nginx容器内部通过Docker服务名做DNS解析,如果你的服务实际名称不是container1(比如叫app1或其他),Nginx无法找到目标容器,会直接返回502。
  • 修正方法:将Nginx配置里proxy_pass http://container1:8080;的container1替换为docker-compose.yml中对应的服务名称。

2. 容器内部端口不匹配

确认container1容器内的Spring Boot应用实际监听端口是8080:

  • 如果你在docker-compose.yml中给该服务的端口映射是8080:8081(即容器内部应用跑在8081端口),那Nginx的proxy_pass端口需要改为8081,否则会连接失败。
  • 查看Spring Boot应用的启动日志,确认应用监听的端口号,确保和Nginx配置中的端口一致。

3. Docker网络连通性检查

确保Nginx容器和container1处于同一个Docker网络:

  • Docker Compose默认会为所有服务创建专属网络,但如果你的docker-compose.yml中手动为不同服务指定了不同网络,会导致容器间无法通信。
  • 可以通过命令docker inspect <nginx-container-name> | grep Networks和docker inspect <container1-name> | grep Networks验证两者是否在同一网络。

4. 目标容器状态验证

检查container1是否正常启动并运行:

  • 执行docker-compose logs container1查看应用启动日志,确认没有启动失败、端口占用等错误。如果应用未成功启动,Nginx自然无法连接到服务。

额外注意点

你配置中sub2.domain.de对应的proxy_pass写的是http://bcontainer2:8081,但你提到能通过IP:8081访问container2,这里可能是笔误,建议修正为http://container2:8081避免后续访问sub2时出现同样问题。

内容的提问来源于stack exchange,提问作者4ctive

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.10 11:05:07