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

容器化Nginx反向代理返回502 Bad Gateway故障求助

解决Docker容器中Nginx反向代理Ombi返回502 Bad Gateway的问题

问题根源

在Docker容器环境中,Nginx配置里的localhost指向的是Nginx容器自身的网络栈,而非宿主机。你之前的配置让Nginx尝试访问自己容器内的3579端口,但该端口没有监听服务,导致连接失败返回502。而直接通过宿主机端口访问Ombi正常,是因为宿主机的端口映射已经把请求转发到了Ombi容器。

解决方案

利用Docker Compose默认的容器间网络,通过容器服务名直接访问Ombi,无需依赖宿主机端口映射。

1. 修改Nginx配置文件(Nginx-base.conf)

将所有proxy_pass目标从http://localhost:3579改为http://ombi:3579,同时合并重复的location配置,添加必要的反向代理请求头(帮助Ombi识别真实请求来源):

server {
 listen 443 ssl http2; 
 listen [::]:443 ssl http2;

 server_name ombi.MYDOMAIN.dev;

 location / { 
  proxy_pass http://ombi:3579; 
  proxy_http_version 1.1; 
  proxy_set_header Upgrade $http_upgrade; 
  proxy_set_header Connection "upgrade";
  # 添加以下请求头,确保Ombi能正确处理反向代理请求
  proxy_set_header Host $host;
  proxy_set_header X-Real-IP $remote_addr;
  proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
  proxy_set_header X-Forwarded-Proto $scheme;

  proxy_buffering off; 
  proxy_buffer_size 16k; 
  proxy_busy_buffers_size 24k; 
  proxy_buffers 64 4k; 
 }
}

2. (可选)显式配置Docker网络(增强可读性)

虽然Docker Compose会自动为同一配置文件中的容器创建共享网络,但显式声明网络可以让配置更清晰:

services:
  ombi:
    image: lscr.io/linuxserver/ombi:latest
    container_name: ombi
    environment:
      - PUID=1004
      - PGID=1004
      - TZ=America/Los_Angeles
      # 若要使用子路径暴露,取消注释下面一行,同时调整Nginx的location配置
      # - BASE_URL=/ombi
    volumes:
      - /mnt/vault/data/ombi/config:/config
    ports:
      - 3579:3579 # 保留端口映射方便直接测试
    restart: unless-stopped
    networks:
      - proxy-network

  nginx:
    image: lscr.io/linuxserver/nginx:latest
    container_name: nginx
    environment:
      - PUID=1000
      - PGID=1000
      - TZ=America/Los_Angeles
    volumes:
      - /mnt/vault/data/nginx:/config
      - /mnt/vault/data/nginx/certbot/www:/var/www/certbot/:ro
    ports:
      - 80:80
      - 443:443
    restart: unless-stopped
    networks:
      - proxy-network

networks:
  proxy-network:
    driver: bridge

3. 重启服务验证

执行命令重启Nginx容器,使配置生效:

docker-compose restart nginx

之后访问https://ombi.MYDOMAIN.dev即可正常访问Ombi服务。

补充:启用BASE_URL的场景

如果需要通过子路径(如https://MYDOMAIN.dev/ombi)暴露Ombi,需:

  1. 取消Ombi容器环境变量中的BASE_URL=/ombi注释
  2. 修改Nginx的location配置:
location /ombi/ { 
  proxy_pass http://ombi:3579/ombi/; 
  # 其余代理头配置同上
}

注意路径末尾的斜杠必须保持一致,避免路径拼接错误。

日志排查优化

若后续仍需排查问题,可调整Nginx的日志级别,在主配置文件中添加:

error_log /config/log/nginx/error.log info;

这样可以捕获到更详细的连接错误信息。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.02 02:25:48