React应用部署到AWS ECS集群后无法加载问题求助
你使用的多阶段构建React应用镜像的Dockerfile内容如下:
# Multi-stage # 1) Node image for building frontend assets # 2) nginx stage to serve frontend assets # Name the node stage "builder" FROM node:10 AS builder # Set working directory WORKDIR /app # Copy all files from current directory to working dir in image COPY . . # install node modules and build assets RUN yarn install && yarn build # nginx state for serving content FROM nginx:alpine # Set working directory to nginx asset directory WORKDIR /usr/share/nginx/html # Remove default nginx static assets RUN rm -rf ./* # Copy static assets from builder stage COPY --from=builder /app/build . # Containers run nginx with global directives and daemon off ENTRYPOINT ["nginx", "-g", "daemon off;"]
镜像本地运行正常,部署到ECS集群后Task运行正常但访问EC2公网地址超时,可按以下方向排查问题:
- EC2实例安全组配置错误:默认EC2安全组仅开放22端口的入站规则,需要确认安全组已允许
0.0.0.0/0(或你本地的公网IP)访问80端口的入站流量,若你修改过nginx监听端口,需同步开放对应端口的入站规则。 - ECS Task未配置端口映射:若使用bridge网络模式部署Task,需要在Task定义中明确将容器的80端口映射到EC2宿主机的80端口(或其他自定义端口,访问时需带上对应端口);若使用awsvpc网络模式,需要确认Task已分配公网IP,且对应安全组放通了80端口入站。
- VPC网络配置异常:确认EC2实例所在的子网已绑定互联网网关,且子网路由表已配置指向互联网网关的公网路由,同时检查子网的网络ACL没有拦截80端口的入站/出站流量。
- 容器内服务监听异常:可以进入运行中的Task容器执行
curl localhost:80验证nginx服务是否正常响应,也可以在EC2实例本地执行curl localhost:80验证端口映射是否生效,排除React构建产物异常、nginx配置错误导致的服务不可用问题。 - ECS服务关联了负载均衡:如果你的ECS服务绑定了ALB/NLB,且EC2安全组仅放通了来自负载均衡的流量,直接访问EC2公网IP会被安全组拦截,此时应访问负载均衡的公网地址验证服务可用性。
- EC2本地防火墙拦截:确认EC2实例操作系统内置的iptables或firewalld规则没有拦截80端口的入站流量。
内容的提问来源于stack exchange,提问作者James Anderbard
相关产品推荐
相关产品推荐

