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

安装AWS CodeDeploy后EC2实例无法正常提供React应用服务问题咨询

CodeDeploy部署后React前端无法访问问题排查与修复方案

CodeDeploy代理默认行为说明

CodeDeploy代理(codedeploy-agent)本身不会主动修改系统防火墙、端口规则或者应用配置,它仅负责按照指定的AppSpec.yml脚本完成部署动作(拉取代码、执行自定义钩子脚本、替换文件等),所有环境变更都是部署脚本内的操作导致的,和代理本身无关。

可能的问题诱因及排查步骤

  • 端口监听规则异常
    先核查React进程是否正常运行,以及监听地址是否支持公网访问:
    执行ss -tulnp | grep -E "(3000|5000)",其中3000为React默认服务端口,5000为你的Node后端端口。
    如果React进程仅监听127.0.0.1:3000,未监听0.0.0.0:3000,公网请求就会超时,这是最常见的问题。修复方式是启动React时指定Host参数:HOST=0.0.0.0 npm start,也可在package.json的启动脚本里添加--host 0.0.0.0参数。
  • 防火墙/安全组规则被部署脚本修改
    Amazon Linux默认用firewalld或者iptables管理端口规则,先检查本地防火墙是否放开了React端口:
    执行iptables -L -n或者firewall-cmd --list-all,如果3000端口没有放通,执行firewall-cmd --add-port=3000/tcp --permanent && firewall-cmd --reload临时修复,再核查CodeDeploy部署钩子脚本(比如AfterInstall、ApplicationStart阶段的脚本)是否存在误操作清空防火墙规则、重置端口配置的逻辑。
    同时同步确认EC2实例的安全组入站规则是否放开了3000端口的公网访问权限。
  • React代理配置失效问题
    你配置的"proxy": "http://localhost:5000/"仅在React开发模式下生效,如果你的部署流程是先执行npm run build打包React静态资源,再用Nginx或者Node直接托管静态文件,该proxy配置不会生效,需要在静态资源托管服务(比如Nginx)里单独配置反向代理规则转发到5000端口。
    先确认Staging1的部署流程是否和Production、Staging2一致:是否为开发模式启动React,还是打包后托管静态资源,有没有漏掉代理配置的同步。
  • 部署目录权限问题
    检查React相关文件、构建产物目录是否开放了codedeploy-agent运行用户(默认是root)的访问权限,避免进程启动后读不到静态文件导致服务假死。执行ls -l /path/to/your/client/build确认权限配置,异常的话执行chown -R root:root /path/to/your/project && chmod -R 755 /path/to/your/project修复。

修复验证

执行完对应修复操作后,先在EC2本地执行curl http://localhost:3000确认是否能正常返回React页面内容,再从公网环境访问测试即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.25 11:24:08