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

AWS ECS部署Symfony应用:Nginx无法连接PHP容器问题排查

排查ECS Fargate中Nginx无法解析PHP容器的问题

核心排查步骤

1. 核对容器名称匹配度

检查ECS任务定义里PHP容器的name字段,必须和Nginx配置中upstream的php完全一致——不能有大小写差异、空格或拼写错误(比如不能写成php-fpm或PHP)。

2. 验证容器间网络连通性

同一Fargate任务内的容器共享网络命名空间,可通过调试工具确认解析是否正常:

  • 给Nginx的Dockerfile添加调试工具:
    RUN apt-get update && apt-get install -y dnsutils iputils-ping
    
  • 部署任务后进入Nginx容器执行:
    nslookup php
    ping php
    
    若解析失败,说明任务定义的网络配置存在异常。

3. 调整Nginx的DNS解析逻辑

Nginx启动时会一次性解析upstream地址,若PHP容器未就绪会导致解析失败,可修改配置动态解析:

location ~ \.php$ {
    set $php_host php;
    fastcgi_pass $php_host:9000;
    resolver 127.0.0.11 valid=30s; # 调用Docker内置DNS服务
    # 其余fastcgi相关配置...
}

4. 检查任务定义的网络与端口配置

  • 确认任务定义使用awsvpc网络模式;
  • PHP容器无需对外暴露9000端口,只要容器内部监听9000即可,任务定义中不需要添加端口映射(同一任务内容器直接访问内部端口)。

5. 配置容器启动依赖

避免Nginx先于PHP容器启动,在ECS任务定义的Nginx容器配置中添加依赖:

"dependsOn": [
    {
        "containerName": "php",
        "condition": "START"
    }
]

6. 确认PHP容器的就绪状态

进入PHP容器检查是否正常监听9000端口:

netstat -tulpn | grep 9000

若未监听,检查PHP-FPM配置(比如www.conf中的listen字段是否为0.0.0.0:9000)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 13:52:05