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

部署于AWS EC2实例的React+Express+Axios项目前端无法调用同实例后端,报Network Error求助

解决EC2实例上React+Express+Axios的Network Error问题

我来帮你梳理这个问题的核心原因,一步步解决:

1. 后端监听地址错误(最关键)

你当前的后端代码里,app.listen默认绑定了localhost:

app.listen(port, () => {
  console.log(`App listening on http://localhost:${port}`);
});

这意味着你的Express服务只接受来自EC2实例内部回环地址(127.0.0.1)的请求,而前端的Axios请求是从用户的浏览器发起的(属于外部网络),根本无法访问到绑定在localhost的后端服务。

解决方案:修改后端的监听地址为0.0.0.0,这样服务会绑定实例的所有网卡,接受来自外部的请求:

app.listen(port, '0.0.0.0', () => {
  console.log(`App listening on http://0.0.0.0:${port}`);
});

2. Axios请求地址使用错误

你当前用了EC2的私有IP 172.31.20.10,这个IP只能在AWS的VPC内部访问,用户的浏览器在外部网络根本无法解析这个私有IP,自然会出现网络错误。

解决方案:把Axios的请求地址改成EC2的公网IP(或者你绑定的域名):

axios.get(`http://<你的EC2公网IP>:5000/`)

比如你的EC2公网IP是3.14.159.26,就写成http://3.14.159.26:5000/。

3. 确认EC2安全组配置

虽然你说Postman能直接访问后端,但还是要确保安全组的入站规则已经开放了5000端口,允许来自0.0.0.0/0(所有IP)的TCP流量。如果安全组没开放这个端口,外部请求(包括浏览器的Axios)会被AWS拦截。

4. 可选优化:用反向代理避免硬编码IP

如果不想在前端代码里硬写公网IP,可以考虑用Nginx做反向代理,把前端(3000端口)和后端(5000端口)的请求统一到80/443端口,这样前端可以直接用axios.get('/api')这类相对路径,同时也能简化跨域配置。

验证步骤

  1. 重启修改后的Express后端服务
  2. 重新部署修改了请求地址的React前端
  3. 打开浏览器访问你的前端公网地址,测试Axios请求是否正常

内容的提问来源于stack exchange,提问作者TF.Ryan

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.30 14:49:09