AWS Web应用部署遇net::ERR_Connection_Refused错误求助
AWS Web应用后端连接拒绝(net::ERR_CONNECTION_REFUSED)问题排查步骤
验证Express服务运行状态
- 执行
pm2 list确认进程状态是否为online - 在EC2实例内部发起本地请求:
curl localhost:你的后端端口/api/products,检查是否能正常返回数据 - 查看pm2日志定位启动或运行报错:
pm2 logs
- 执行
排查端口与防火墙规则
- 确认AWS安全组已开启后端服务端口(或Nginx反向代理端口)的入站权限,允许前端IP或合法访问范围
- 检查EC2本地防火墙:
sudo iptables -L,确认无端口拦截规则 - 核对Nginx配置中反向代理的端口与Express监听端口是否一致
检查HTTPS切换后的配置问题
- 确认Nginx HTTPS配置的反向代理规则正确,示例片段:
server { listen 443 ssl; server_name your-domain.com; ssl_certificate /path/to/ssl/cert.pem; ssl_certificate_key /path/to/ssl/key.pem; location /api { proxy_pass http://localhost:3000; # 替换为你的后端端口 proxy_set_header Host $host; proxy_set_header X-Forwarded-Proto $scheme; } } - 确认前端API请求地址已切换为HTTPS,避免混合内容限制
- 在EC2内部测试Nginx转发:
curl https://localhost/api/products,验证是否能获取后端数据
- 确认Nginx HTTPS配置的反向代理规则正确,示例片段:
重新校验CORS配置
- 确认Express的CORS中间件明确允许前端HTTPS域名,示例:
const cors = require('cors'); app.use(cors({ origin: 'https://your-frontend-domain.com', credentials: true })); - 查看浏览器控制台完整网络请求记录,确认请求是否真的到达后端
- 确认Express的CORS中间件明确允许前端HTTPS域名,示例:
检查端口占用情况
- 执行
lsof -i :你的后端端口或netstat -tulpn | grep 你的后端端口,确认端口未被其他进程占用 - 若端口被占用,终止对应进程或修改Express监听端口
- 执行
内容的提问来源于stack exchange,提问作者Ethan Harness
相关产品推荐
相关产品推荐

