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

AWS EC2部署中前端调用后端API出现ERR_CONNECTION_REFUSED问题求助

问题解决方案

核心问题分析

你遇到的net::ERR_CONNECTION_REFUSED是因为前端请求直接尝试访问EC2公网IP的3001端口,但安全组未开放该端口给外部;同时你配置的NGINX反向代理没有生效,因为前端请求路径没走代理转发。

具体解决步骤

  1. 修正前端API请求路径
    前端代码中所有后端API请求必须使用相对路径,比如把 http://你的EC2公网IP:3001/api/users 改成 /api/users。这样请求会自动发送到当前页面所在的80端口(NGINX服务器),再由NGINX转发到本地3001端口的后端服务。

  2. 优化并验证NGINX代理配置
    你的现有配置基础没问题,添加几个代理头参数可以避免后端识别请求来源异常:

    server {
        listen 80 default_server;
        listen [::]:80 default_server;
        server_name _;
    
        location / {
            root /usr/share/nginx/html/aws-thought/client/build;
            index index.html;
            try_files $uri /index.html;
        }
    
        location /api/ {
            proxy_pass http://127.0.0.1:3001;
            # 添加以下代理头
            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;
        }
    }
    

    修改后执行命令检查配置合法性:

    sudo nginx -t
    

    输出test is successful后重启NGINX:

    sudo systemctl restart nginx
    
  3. 安全组无需开放3001端口
    后端服务仅需在EC2内部被NGINX访问,完全不需要暴露给外部网络,所以现有安全组配置足够,不要添加3001端口的开放规则——这也是反向代理保护后端服务的核心作用。

  4. 验证代理是否生效
    在本地终端执行以下命令,如果能正常返回后端数据,说明代理配置成功:

    curl http://你的EC2公网IP/api/users
    

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.20 02:50:35