You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何配置Linode NodeBalancer+NGINX反向代理Node.js应用解决502错误

问题排查与修复方案

核心问题分析

出现502 Bad Gateway且日志显示Permission denied,本质是NodeBalancer的私有IP无法访问服务器上的3000端口,大概率是两个原因导致:Node.js应用仅绑定本地回环地址,或防火墙拦截了私有IP段的访问请求。

修复步骤

1. 修改Node.js应用监听地址

确保应用不是仅绑定127.0.0.1(仅允许本地访问),改为绑定0.0.0.0(允许所有网卡接口访问)或服务器的私有IP:

// 示例Node.js代码调整
app.listen(3000, '0.0.0.0', () => {
  console.log('应用运行在0.0.0.0:3000');
});

修改后重启Node.js应用。

2. 配置防火墙允许私有IP段访问3000端口

Linode的私有IP段为192.168.0.0/16,需添加规则允许该网段访问3000端口:

  • 若使用ufw防火墙:
ufw allow from 192.168.0.0/16 to any port 3000
ufw reload
  • 若使用iptables防火墙:
iptables -A INPUT -s 192.168.0.0/16 -p tcp --dport 3000 -j ACCEPT
# 保存规则(Debian/Ubuntu系统示例)
iptables-save > /etc/iptables/rules.v4

3. 优化NGINX配置

当前配置的server_name仅匹配www.adamhelm.com,但用户访问的是adamhelm.com,需补充该域名;同时可将proxy_pass指向服务器私有IP,避免公网IP解析问题:

listen 443;
server_name adamhelm.com www.adamhelm.com;

location / {
    proxy_pass http://192.168.xxx.xxx:3000; # 替换为你的服务器私有IP
    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:systemctl restart nginx

验证

访问https://adamhelm.com和https://www.adamhelm.com,检查是否正常加载应用;同时查看NGINX日志,确认无Permission denied错误。

内容的提问来源于stack exchange,提问作者adamfhelm

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.01 07:31:06