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

Azure容器应用中Nginx反向代理FastAPI返回404问题求助

Azure容器应用Nginx反向代理404问题解决建议

问题背景

在Azure容器应用中搭建Nginx反向代理,环境包含Nginx(外部入口)和FastAPI(内部入口)容器,配置了手动虚拟网络、子网及私有DNS区域。访问Nginx公网URL的根路径/时出现Azure蓝色404页面,但/nginx路径可正常访问;Nginx容器内通过curl http://chat-api:80能正常调用API,且本地Docker Compose环境运行正常。

排查与解决步骤

  • 检查容器应用Ingress配置
    确认Nginx容器的Ingress设置:

    • 确保Ingress的目标端口与Nginx监听的80端口一致;
    • 确认Ingress未设置额外的路径前缀,避免Azure路由规则拦截根路径/的请求;
    • 检查是否有其他容器应用的Ingress规则冲突,导致根路径请求被错误路由。
  • 调整Nginx的Host头转发配置
    当前配置中proxy_set_header Host $host;会将Azure公网域名作为Host头转发给API容器,若FastAPI服务有Host头校验,可能导致请求被拒绝。可尝试修改为:

    proxy_set_header Host $proxy_host;
    # 或直接指定API容器名称
    # proxy_set_header Host chat-api;
    
  • 验证私有DNS解析稳定性
    虽然容器内curl正常,但Nginx转发时可能存在DNS解析异常:

    • 在Nginx容器内执行nslookup chat-api,确认解析结果稳定指向API容器;
    • 尝试将upstream中的容器名称替换为API容器的私有IP,测试是否能正常转发:
      upstream chat_api_group {
          server 10.0.0.x:80; # 替换为API容器的私有IP
      }
      
  • 查看Nginx debug日志
    已开启debug级日志,进入Nginx容器查看/var/log/nginx/error.log,重点关注根路径转发时的错误信息(如连接超时、拒绝、状态码异常等),精准定位问题。

  • 调整proxy_pass路径配置
    尝试去掉proxy_pass末尾的斜杠,避免路径匹配冲突:

    proxy_pass http://chat_api_group;
    

    同时可添加proxy_set_header X-Forwarded-Host $host;,确保转发请求携带正确的主机信息。

附用户提供的Nginx配置

error_log /var/log/nginx/error.log debug;

worker_processes auto;

events {
    worker_connections 1024;

}

http {

    upstream chat_api_group {
        server chat-api:80; # Container name
    }
    
    server {
        listen 80;

        # Forward all requests to the chat api webserver
        location / {
            proxy_pass http://chat_api_group/;

            proxy_set_header Host $host;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header X-Forwarded-Proto $scheme;
            proxy_set_header X-Real-IP $remote_addr;
            
            proxy_http_version 1.1;
            proxy_ssl_server_name on;

            # For some people these lines helped, for me they don't
            proxy_pass_request_headers on;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
            proxy_redirect off;
            proxy_buffering off;

        }


        # To verify that the nginx server is running regardless of its proxy forwarding
        location /nginx {
            alias /usr/share/nginx/html/;
            index index.html;
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.16 15:18:18