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

Docker Compose环境下Nginx反向代理无法发现webapp后端服务的原因

Nginx无法发现webapp服务的原因及修复方案

核心问题:网络不互通

你的nginx服务没有加入和webapp相同的bridged_network网络。Docker Compose会给未指定网络的服务分配默认网络,这导致nginx和webapp处于隔离的网络环境里,自然无法通过服务名webapp解析到目标容器。

次要潜在问题

  • depends_on只管容器启动顺序,不管服务是否就绪:就算nginx在webapp之后启动,webapp可能还没完成初始化,但这不是当前报错的直接原因。
  • Nginx配置里的端口可能没必要用主机映射端口:容器间通信直接用容器内部端口就行,webapp的ports: ":8181"是把容器内的8181映射到主机随机端口,但容器之间通信不需要这个映射,得确认webapp容器内部实际监听的端口是否是8181。

具体修复步骤

  1. 给nginx添加网络配置
    修改docker-compose.yaml里的nginx服务块,加入和webapp一样的网络:
nginx:
  image: example/reverseproxy
  build:
    context: reverseproxy
  ports:
    - "8181:80"
  depends_on:
    - webapp
  networks:
    - bridged_network  # 新增此行,让nginx和webapp在同一网络
  1. 验证webapp容器内部端口
    如果webapp实际在容器内监听的不是8181(比如默认的80端口),要同步修改Nginx的nginx.conf:
proxy_pass http://webapp:80;  # 替换为webapp容器内的实际端口
  1. 可选:添加健康检查避免服务未就绪问题
    在webapp服务里加上健康检测,确保nginx只在webapp完全就绪后启动:
webapp:
  # ...其他原有配置
  healthcheck:
    test: ["CMD", "curl", "-f", "http://localhost:8181/health"]  # 换成你的服务健康检查接口
    interval: 10s
    timeout: 5s
    retries: 3

然后修改nginx的depends_on:

nginx:
  # ...其他原有配置
  depends_on:
    webapp:
      condition: service_healthy

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 04:16:29