AWS EC2实例部署MERN Web应用成功后浏览器无法访问如何排查
问题根因概述
该ERR_CONNECTION_TIMED_OUT报错在AWS EC2部署场景下,绝大多数情况是入站流量被网络访问控制策略拦截导致,少部分由实例内部防火墙、应用监听配置错误引发。
排查与解决步骤
1. 检查EC2安全组入站规则(最常见原因)
- 进入AWS EC2控制台,定位到目标实例,查看实例关联的安全组配置
- 添加入站规则放行对应端口的TCP访问:
- 80端口:选择规则类型为
HTTP,源地址设置为0.0.0.0/0(测试阶段可允许所有IPv4访问,生产环境可按需缩窄可信IP范围) - 3000端口:选择规则类型为
自定义TCP,端口范围填写3000,源地址设置为0.0.0.0/0
- 80端口:选择规则类型为
- 若需支持IPv6访问,需额外添加源地址为
::/0的对应规则
2. 检查子网关联的网络ACL配置
- 查看实例所在子网绑定的网络ACL:默认配置允许所有入站/出站流量,若你手动修改过配置,需确认:
- 入站规则放开80、3000端口的TCP访问
- 出站规则放开临时端口范围(1024-65535)的响应流量
3. 检查EC2实例内部防火墙配置
根据实例操作系统执行对应操作:
- Ubuntu/Debian系统:
执行sudo ufw status查看防火墙状态,若为开启状态,依次执行:sudo ufw allow 80/tcp sudo ufw allow 3000/tcp - CentOS/RHEL系统:
执行sudo firewall-cmd --list-all查看已开放端口,若未放开对应端口,依次执行:sudo firewall-cmd --add-port=80/tcp --permanent sudo firewall-cmd --add-port=3000/tcp --permanent sudo firewall-cmd --reload
4. 确认应用监听地址配置正确
- 若应用仅绑定
127.0.0.1地址,仅能在实例本地访问,公网无法请求到,需修改为绑定0.0.0.0:- 前端应用:启动命令添加
--host 0.0.0.0参数,例如npm run start -- --host 0.0.0.0 - 后端Node应用:监听端口时指定host参数,示例:
app.listen(80, '0.0.0.0', () => {})
- 前端应用:启动命令添加
- 可在实例本地执行
curl localhost:80、curl localhost:3000验证应用本身可正常响应
5. 核对实例公网IP有效性
- 若未给EC2绑定弹性公网IP,实例停止后重启会自动更换公网IP,需确认你访问的IP和EC2控制台显示的当前公网IP一致
验证方法
配置修改完成后,可先在本地设备执行telnet EC2_INSTANCE_PUBLIC_IP_ADDRESS 80测试端口连通性,若能连通代表网络层面配置正常,再到浏览器访问即可。
内容的提问来源于stack exchange,提问作者AG_HIHI
相关产品推荐
相关产品推荐

