排查Nginx反向代理配置中的502 Bad Gateway错误
验证端口监听状态
执行netstat -tulpn | grep 3000或ss -tulpn | grep 3000,确认3000端口确实被目标进程占用,且监听地址为127.0.0.1或0.0.0.0(若服务仅监听外部IP,本地回环访问会失败)。测试Nginx到目标服务的连通性
在Nginx所在服务器上运行curl http://localhost:3000,如果无法获取正常响应,说明Nginx进程无法访问目标端口,可能是本地防火墙(iptables/firewalld)拦截了连接,或是目标服务限制了Nginx用户的访问权限。核对proxy_pass配置准确性
你提到要转发至另一服务器,但配置里写的是localhost:3000——这是指向Nginx所在服务器的本地端口,若目标服务在其他机器上,需将localhost替换为目标服务器的IP或域名,比如proxy_pass http://192.168.1.100:3000;。另外注意proxy_pass末尾的斜杠规则,若无斜杠会保留完整请求路径,需确认目标服务能处理对应路径。查看Nginx错误日志定位原因
打开Nginx错误日志(默认路径/var/log/nginx/error.log),日志中会记录502错误的具体触发原因,比如连接被拒绝、超时等,这是最有效的排查线索。检查目标服务的请求日志
确认3000端口的应用是否收到了Nginx的转发请求:若未收到,说明连接在Nginx到目标服务之间中断;若收到但返回异常,查看服务自身日志的错误信息,定位应用层问题。
内容的提问来源于stack exchange,提问作者Kingdavid Ochai

