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

Azure虚拟机中Nginx托管双端口Node.js服务器的访问异常问题

问题分析与解决方法

核心问题

你当前的Nginx配置存在逻辑错误,同时访问public_ip:5000失败的原因可能涉及端口开放或Node服务绑定设置:

  1. Nginx的两个server块都监听80端口,且server_name均为_,所有80端口的请求都会被第一个标记为default_server的块处理,第二个块永远不会生效。
  2. 你尝试直接访问public_ip:5000时,请求是直接指向Node.js的5000端口,而非经过Nginx转发,因此当前的Nginx配置对这个请求没有作用。

解决步骤

方式一:直接访问Node服务(无需Nginx转发)

如果不需要Nginx的反向代理功能(比如静态资源托管、SSL等),可以直接让Node服务对外开放:

  • 检查Node服务绑定地址:确保app.js中监听的是0.0.0.0而非localhost,否则服务仅能在服务器内部访问。示例代码:
    app.listen(5000, '0.0.0.0', () => {
      console.log('Server running on port 5000');
    });
    
  • 开放服务器防火墙端口:
    • 对于UFW防火墙:
      sudo ufw allow 3000/tcp
      sudo ufw allow 5000/tcp
      sudo ufw reload
      
    • 对于firewalld:
      sudo firewall-cmd --add-port=3000/tcp --permanent
      sudo firewall-cmd --add-port=5000/tcp --permanent
      sudo firewall-cmd --reload
      
  • 验证服务运行状态:在服务器上执行netstat -tulpn | grep node,确认5000端口有Node进程在监听。

方式二:通过Nginx反向代理(用端口区分服务)

如果需要使用Nginx的功能,可修改Nginx配置,让Nginx分别监听3000和5000端口,反向代理到对应的Node服务:

# 处理3000端口请求
server {
    listen 3000 default_server;
    listen [::]:3000 default_server;

    server_name _;

    location / {
         proxy_pass http://localhost:3000;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header X-Forwarded-Proto $scheme;
    }
}

# 处理5000端口请求
server {
    listen 5000;
    listen [::]:5000;

    server_name _;

    location / {
         proxy_pass http://localhost:5000;
         proxy_set_header Host $host;
         proxy_set_header X-Real-IP $remote_addr;
         proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
         proxy_set_header X-Forwarded-Proto $scheme;
    }
}

修改完成后,重启Nginx:

sudo systemctl restart nginx

同时按照方式一中的步骤开放3000和5000端口的防火墙规则。

额外排查点

如果执行上述步骤后仍出现502错误:

  • 检查Node服务是否正常运行:执行ps aux | grep app.js,确认进程存在。
  • 测试服务器内部访问:在服务器上执行curl http://localhost:5000,如果返回正常,说明服务本身没问题,问题出在网络层面(防火墙、云服务商安全组等)。
  • 检查云服务商安全组:如果你的服务器是云主机,需要在安全组规则中添加允许3000和5000端口的入站流量。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.03 07:31:26