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

无法通过EC2公网IP访问AWS ECS部署的前后端应用求助

问题排查与解决建议

针对你遇到的ECS实例公网无法访问、内部访问正常的问题,给出以下具体排查方向:

1. 确认主EC2实例的公网基础可达性

  • 本地执行 ping <主实例公网IP>,判断网络连通性:
    • 若ping不通,先检查主实例是否有公网IP(AWS控制台查看EC2实例的「公网IPv4地址」,为空则需绑定弹性IP)
    • 检查主实例所在子网的「自动分配IPv4公有IP」选项是否开启(子网配置中需设为「是」)
    • 核对网络ACL规则:入站规则需允许80端口的0.0.0.0/0流量,出站规则需允许所有响应流量(默认规则通常满足,若有修改需确认)

2. 验证主实例的端口监听与任务状态

  • SSH登录主实例,执行 netstat -tulpn | grep :80,确认主机80端口是否被Docker进程监听:
    • 若未监听,执行 docker ps 查看前端容器是否处于running状态
    • 查看ECS代理日志排查任务启动问题:cat /var/log/ecs/ecs-agent.log

3. 检查安全组的关联范围

  • 确认安全组已正确关联所有三台EC2实例(包括主实例),避免出现仅部分实例绑定安全组的情况

4. 模拟主实例内部的公网访问

  • 在主实例内执行 curl http://<主实例公网IP>:80,若仍无响应:
    • 检查主机iptables规则:iptables -L,确认未拦截80端口入站流量
    • 验证Docker端口映射:docker inspect <前端容器ID> | grep -A5 -B5 "PortBindings",确认hostPort与containerPort的80端口映射正确

5. 排查Nginx配置细节

  • 在容器内执行 netstat -tulpn | grep nginx,确认Nginx监听的是0.0.0.0:80而非127.0.0.1:80(仅监听回环地址会导致外部无法访问)
  • 临时修改Nginx配置添加日志输出(当前配置未指定日志路径,所以无日志),在server块中加入:
    access_log /var/log/nginx/access.log;
    error_log /var/log/nginx/error.log;
    
    重启Nginx后测试,通过日志定位请求是否到达容器

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.28 06:27:38