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

Docker多容器应用NGINX报111连接拒绝错误求助

问题分析与解决方案

核心问题

NGINX返回502 Bad Gateway的原因是容器内的localhost指向容器自身,而非后端服务容器。你的ki-ui容器中,proxy_pass http://localhost:8000尝试连接容器自身的8000端口,但该端口并未运行后端服务,导致连接被拒绝。

具体修复步骤

1. 修改NGINX配置中的代理地址

编辑nginx.conf,将location /ai块中的proxy_pass目标改为后端服务的Docker Compose服务名:

location /ai {
        proxy_pass http://ki-backend:8000;
        proxy_http_version 1.1;
        proxy_set_header Upgrade $http_upgrade;
        proxy_set_header Connection 'upgrade';
        proxy_set_header Host $host;
        proxy_cache_bypass $http_upgrade;
}

在Docker Compose的同一自定义网络(comms)中,服务名ki-backend会被自动解析为对应容器的IP地址,无需依赖端口映射。

2. 修正后端容器的expose配置

你的docker-compose.yml中,后端容器的expose字段错误地写为8080,但容器内部服务运行在8000端口。修改为:

ki-backend:
    platform: linux/amd64
    image: ki-backend:latest
    pull_policy: if_not_present
    container_name: ki-backend
    ports:
      - "8080:8000"
    expose:
      - 8000  # 改为容器内部实际运行的端口
    networks:
      - comms

expose的作用是声明容器对外暴露的端口(仅在Docker网络内可见),与宿主机端口映射(ports)无关。

3. 重启服务使配置生效

执行以下命令重启所有容器:

docker-compose down && docker-compose up -d

额外验证点

  • 确认后端服务确实在容器内部的8000端口监听:可以进入后端容器执行curl localhost:8000/ai/chatGPT测试服务是否正常响应。
  • SSL证书无需调整:前端能正常加载443端口内容,说明证书配置有效,与502错误无关。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.19 07:17:06