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

AWS上PM2部署React+Express时NGINX报ERR_CONNECTION_REFUSED错误求解

根本原因

React是客户端渲染框架,.env配置项会在编译阶段打包进静态资源,你配置的http://localhost:8017/api/v1/会让用户浏览器访问本地的8017端口,而非你的AWS服务器端口,自然报连接拒绝。替换为公网IP后超时是因为AWS安全组未开放8017端口入站规则,或Express服务仅监听127.0.0.1地址。

排查步骤

  • 登录AWS服务器执行pm2 status,确认CCT_REACT和CCT_API_REST两个进程状态均为online
  • 服务器本地执行curl http://127.0.0.1:8017/api/v1/(替换为实际存在的接口路径),确认接口本身可以正常返回数据
  • 若公网IP加8017端口访问API超时,先检查AWS实例对应安全组的入站规则,确认已开放8017端口TCP协议的公网访问权限,再检查Express启动逻辑是否绑定了0.0.0.0地址,仅绑定127.0.0.1的话无法接收公网请求

推荐解决方案(无需暴露API端口到公网,更安全)

  1. 修改NGINX配置,在现有server块内新增API反向代理规则:
location /api/ {
    proxy_pass http://127.0.0.1:8017/api/;
    proxy_set_header Host $host;
    proxy_set_header X-Real-IP $remote_addr;
    proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    proxy_set_header X-Forwarded-Proto $scheme;
}
  1. 修改React前端.env配置,将REACT_APP_DB改为相对路径:
REACT_APP_DB=/api/v1/
  1. 重新编译React生成静态资源,重启PM2的两个进程,执行nginx -s reload重载NGINX配置即可

额外注意项

API服务.env中的NODE_ENV=development会被PM2配置里的NODE_ENV=production覆盖,建议统一环境变量配置避免不必要的问题。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.30 11:45:05