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

AWS ECS中Nginx无法解析Service Connect DNS问题排查

解决AWS ECS Service Connect下Nginx转发超时问题

核心问题分析

127.255.0.1是AWS Service Connect注入到容器的本地代理地址,Nginx解析到这个地址说明Service Connect的DNS生效了,但请求超时大概率是Nginx配置没适配Service Connect的代理逻辑,或是端口映射配置错误。

具体解决步骤

  • 检查Nginx的proxy_pass配置
    确保proxy_pass使用Service Connect定义的服务名和端口,比如Service B的Service Connect服务名是service-B、端口为8080,配置需写成:

    proxy_pass http://service-B:8080;
    

    必须保留服务名和对应端口,不能省略端口或直接用IP地址。

  • 修正Nginx resolver配置
    Service Connect的本地DNS地址是容器内的127.0.0.1,如果之前指定了外部resolver会导致解析异常。调整resolver配置为:

    resolver 127.0.0.1 valid=30s;
    

    也可以直接删除resolver配置,让Nginx使用容器默认的DNS解析规则。

  • 核对Service Connect端口映射
    确认Service B的Service Connect配置中,portMapping的containerPort和Service A请求的端口完全一致;同时检查Service A的任务角色是否拥有ecs-service-connect相关权限,确保能正常访问Service Connect代理服务。

  • 调整Nginx超时参数
    若因代理转发超时导致失败,可增加Nginx的超时设置:

    proxy_connect_timeout 60s;
    proxy_send_timeout 60s;
    proxy_read_timeout 60s;
    

    避免默认超时时间过短引发请求失败。

  • 验证Service Connect代理状态
    进入Service A容器,执行curl http://127.255.0.1:<ServiceB的ServiceConnect端口>,如果能正常访问,说明代理本身无问题,问题出在Nginx的解析或转发配置;如果不通,检查两个服务是否在同一个Service Connect命名空间下,以及服务关联配置是否正确。

额外排查点

  • 确认Nginx容器的网络模式为awsvpc,Service Connect仅支持该网络模式的ECS服务。
  • 检查安全组配置,确保Service A容器可访问127.255.0.1的代理端口(Service Connect默认会开放对应端口,若有自定义防火墙规则需放行)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.01 17:59:56