AWS EC2部署中前端调用后端API出现ERR_CONNECTION_REFUSED问题求助
问题解决方案
核心问题分析
你遇到的net::ERR_CONNECTION_REFUSED是因为前端请求直接尝试访问EC2公网IP的3001端口,但安全组未开放该端口给外部;同时你配置的NGINX反向代理没有生效,因为前端请求路径没走代理转发。
具体解决步骤
修正前端API请求路径
前端代码中所有后端API请求必须使用相对路径,比如把http://你的EC2公网IP:3001/api/users改成/api/users。这样请求会自动发送到当前页面所在的80端口(NGINX服务器),再由NGINX转发到本地3001端口的后端服务。优化并验证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安全组无需开放3001端口
后端服务仅需在EC2内部被NGINX访问,完全不需要暴露给外部网络,所以现有安全组配置足够,不要添加3001端口的开放规则——这也是反向代理保护后端服务的核心作用。验证代理是否生效
在本地终端执行以下命令,如果能正常返回后端数据,说明代理配置成功:curl http://你的EC2公网IP/api/users
内容的提问来源于stack exchange,提问作者bswartz
相关产品推荐
相关产品推荐

