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

Azure容器应用Nginx反向代理外部请求报连接失败排查

Azure容器应用中Nginx反向代理外部请求503错误排查

环境与配置

Nginx反向代理与后端服务均以Docker镜像部署在Azure容器应用,核心反向代理规则如下:

location /api/my-service/ {
    access_log /var/log/nginx/my-service_api.log main;
    proxy_http_version 1.1;
    proxy_set_header "Connection" "";
    proxy_pass http://my-service/;    
}

问题现象

  • 容器内部执行curl -ik -X GET 'https://localhost/api/my-service/some-endpoint',或通过容器应用公网URL在内部发起请求,均可获得预期响应
  • 本地电脑发起外部请求时,返回503错误,错误详情:

    upstream connect error or disconnect/reset before headers. retried and the latest reset reason: connection failure, transport failure reason: delayed connect error: 111

此前容器内部也曾出现相同错误,添加proxy_http_version 1.1;配置后解决,因此怀疑外部请求到Nginx容器间存在HTTP版本相关问题,但未找到直接配置或日志佐证。

核心疑问

既然容器内部反向代理运行正常,是否可认定问题与容器应用配置相关?可能的原因是什么?

补充信息

  • 已启用Ingress,允许任意来源流量,Ingress类型为HTTP,传输方式设为auto
  • 使用Cloudflare证书加密Cloudflare与容器应用间流量,跳过Cloudflare直接访问容器应用URL仍出现相同错误

分析与可能原因

可以初步认定问题与Azure容器应用的外部流量配置或网络层设置相关——容器内部请求正常,说明Nginx代理逻辑、后端服务连通性本身无问题,故障点出在外部流量进入容器应用后的处理环节。

可能的原因包括:

  • Ingress HTTP版本适配异常:虽然Ingress传输方式设为auto,但Azure容器应用的Ingress可能对外部请求的HTTP版本有默认限制(比如默认兼容HTTP/1.0),导致流量转发到Nginx后出现连接异常。可尝试强制Ingress使用HTTP/1.1,或在Nginx配置中添加针对外部请求的HTTP版本强制转换逻辑。
  • 容器端口/协议配置不匹配:检查Nginx容器的端口绑定配置,确认Ingress指向的端口与容器暴露端口一致,且协议设置为HTTP/1.1。若端口映射协议为HTTP/2,可能与Nginx的代理配置不兼容。
  • 外部流量下的DNS解析问题:内部请求时Nginx可正常解析my-service,但外部流量经过Ingress后,容器应用的内部DNS解析策略可能变化,导致Nginx无法正确找到后端服务。可在Nginx配置中添加DNS解析日志,验证外部请求时my-service的解析状态。
  • 连接超时配置差异:Azure容器应用Ingress的默认连接超时时间可能远短于内部请求的超时设置,导致Nginx与后端服务的连接被提前回收。可在Nginx配置中增加proxy_connect_timeout、proxy_send_timeout、proxy_read_timeout等参数,延长超时阈值。
  • Ingress路由规则冲突:检查是否存在优先级更高的Ingress规则,干扰了/api/my-service/路径的流量转发,导致请求被导向错误后端。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.06 22:40:04