使用域名调用Node.js API时出现502 Bad Gateway故障求助
Node.js + Nginx反向代理下的502 Bad Gateway问题排查求助
我的后端基于Node.js部署在VPS上,使用Nginx作为反向代理。近期合并代码后,出现502 Bad Gateway错误,错误页面如下:
502 Bad Gateway 502 Bad Gateway
nginx/1.24.0 (Ubuntu)
此前所有API均正常运行(当时API数量较少),这是间歇性问题——多数时候报错,偶尔能返回正确响应。
已尝试的操作
- 按网上建议修改Nginx配置:
proxy_connect_timeout 600; proxy_send_timeout 600; proxy_read_timeout 600; send_timeout 600; proxy_buffers 16 16k; proxy_buffer_size 32k; proxy_busy_buffers_size 64k; proxy_temp_file_write_size 64k; - 查看日志发现错误:upstream prematurely closed connection while reading response header from upstream
- 回滚了新合并的PR,但旧代码中仍有部分API出现该问题,仅Login和Signup API正常
- 本地curl测试:
- 直接访问
http://127.0.0.1:3004/customer/address/67c9ee8e513cb5960b73bc93——响应成功 - 通过域名访问
https://dev.myDomain.com/v2/customer/address/67c9ee8e513cb5960b73bc93——返回Bad Gateway
- 直接访问
本地环境代码运行完全正常,恳请指点排查方向。
更新1
- Login和SignUp API无论频繁调用多少次均返回成功响应
- 针对一个报错API,修改为仅返回构造对象(不访问数据库)时可成功,但连续多次调用仍返回502 Bad Gateway
- 日志重复出现如下错误:
upstream: "http://127.0.0.1:3004/customer/address/67c9ee8e513cb5960b73bc93", host: "dev.myDomain.ca"2025/04/06 16:18:26 [error] 484024#484024: *12337 connect() failed (111: Connection refused) while connecting to upstream, client: XXX.XX.17.XX1, server: dev.myDomain.ca, request: "GET /v2/customer/address/67c9ee8e513cb5960b73bc93 HTTP/1.1", upstream: "http://127.0.0.1:3004/customer/address/67c9ee8e513cb5960b73bc93", host: "dev.myDomain.ca"
更新2
已取得重要进展,但暂未明确原因:
- 停止PM2实例后,手动运行服务器:
此前报错的API均运行正常;但重启PM2实例后,Bad Gateway错误再次出现。node /var/www/develop/MyDomain/dist/server.js - 另外修改了端口配置:
原代码:
因React UI运行在3000端口,修改为:const PORT = normalizePort(process.env.PORT || '3000');
修改后手动运行服务器可正常工作。const PORT = normalizePort(process.env.PORT || '3001');
内容的提问来源于stack exchange,提问作者Tech Admin
相关产品推荐
相关产品推荐

