Nginx代理Node应用出现502 Bad Gateway问题求助(附配置及日志)
Node应用Nginx部署连接失败问题排查方案
从你提供的Nginx错误日志来看,核心问题是Nginx无法连接到上游的Node服务(localhost:8080),提示连接拒绝(111: Connection refused),按以下步骤逐一排查:
1. 确认Node服务状态
- 检查8080端口是否被监听:
无输出则说明Node服务未启动,或未监听8080端口。netstat -tulpn | grep 8080 # 或更简洁的ss命令 ss -tulpn | grep 8080 - 手动启动Node应用,查看控制台输出是否有启动报错,确保服务能正常运行。
2. 检查Node应用监听地址
- 确认Node代码中监听的是
0.0.0.0:8080而非仅localhost:8080(后者在部分隔离环境下可能导致本地代理无法访问),修改后重启服务。
3. 简化并验证Nginx配置
- 你的配置中
root和index段无实际作用(所有请求已被代理到Node服务),可简化为:server { listen 80 default_server; listen [::]:80 default_server; server_name _; location / { proxy_pass http://localhost:8080; proxy_http_version 1.1; proxy_set_header Upgrade $http_upgrade; proxy_set_header Connection 'upgrade'; proxy_set_header Host $host; proxy_cache_bypass $http_upgrade; } } - 修改后验证配置有效性并重载Nginx:
sudo nginx -t && sudo systemctl reload nginx
4. 排查端口占用与防火墙
- 检查8080端口是否被其他进程占用:
若有占用,结束对应进程后重启Node服务。sudo lsof -i :8080 - 确认本地防火墙(如ufw)未限制8080端口的本地连接:
如有必要,添加允许本地访问8080的规则。sudo ufw status
5. 验证本地连接可用性
- 在服务器本地用curl访问Node服务:
若无法访问,说明问题出在Node服务本身或本地网络配置,而非Nginx。curl http://localhost:8080
内容的提问来源于stack exchange,提问作者codeVibek
相关产品推荐
相关产品推荐

