0

我的服务器中的 Ubuntu 和 nginx。我有这个服务器的多个子域,它的 3000 端口已经被其他网站使用。整个节点应用程序将从pm2提供。

我猜导致 502 网关错误,是我的服务器没有提供端口。

// /etc/nginx/sites-available/projectB

server {
    root /var/www/projectB;
    server_name projectB.domain.com www.projectB.domain.com;

    location / {
      proxy_pass http://localhost:3001; // this will be fine if it is localhost:3000;
      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;
    }
}

这是我的后端服务端口。里面不存在3001端口。我也会在下面提供 nginx error.log。

// sudo netstat -plant

Proto Recv-Q Send-Q Local Address           Foreign Address         State       PID/Program name    
tcp        0      0 127.0.0.53:53           0.0.0.0:*               LISTEN      494/systemd-resolve 
tcp        0      0 0.0.0.0:22              0.0.0.0:*               LISTEN      787/sshd: /usr/sbin 
tcp        0      0 0.0.0.0:443             0.0.0.0:*               LISTEN      80730/nginx: master 
tcp        0      0 127.0.0.1:27017         0.0.0.0:*               LISTEN      32831/mongod        
tcp        0      0 0.0.0.0:80              0.0.0.0:*               LISTEN      80730/nginx: master 
tcp        0      0 127.0.0.1:27017         127.0.0.1:39994         ESTABLISHED 32831/mongod        
tcp        0      0 127.0.0.1:39994         127.0.0.1:27017         ESTABLISHED 81007/node          
tcp        0    364 139.59.107.31:22        124.13.195.75:50855     ESTABLISHED 82341/sshd: root@pt 
tcp        0      0 127.0.0.1:27017         127.0.0.1:39984         ESTABLISHED 32831/mongod        
tcp        0      0 127.0.0.1:27017         127.0.0.1:39986         ESTABLISHED 32831/mongod        
tcp        0      0 127.0.0.1:39986         127.0.0.1:27017         ESTABLISHED 81007/node          
tcp        0      0 127.0.0.1:39984         127.0.0.1:27017         ESTABLISHED 81007/node          
tcp6       0      0 :::22                   :::*                    LISTEN      787/sshd: /usr/sbin 
tcp6       0      0 :::3000                 :::*                    LISTEN      81007/node          
tcp6       0      0 :::443                  :::*                    LISTEN      80730/nginx: master 
tcp6       0      0 :::80                   :::*                    LISTEN      80730/nginx: master 

nginx/error.log

[error] 80731#80731: *434 connect() failed (111: Connection refused) while connecting to upstream, client: clientPort, server: projectB.domain.com, request: "GET / HTTP/1.1", upstream: "http://127.0.0.1:3001/", host: "projectB.domain.com"
4

1 回答 1

1

看起来您的应用程序本身没有在端口 3001 上侦听,这是 nginx 尝试将您的请求转发到的地方。

检查您的应用程序是否配置为侦听该端口并且它正在运行。您可以通过在服务器上运行此命令来尝试在没有 nginx 的情况下进行连接来检查它是否正常工作。

curl http://localhost:3001/

如果您得到响应,那么您的应用程序正在运行。查看 Nginx 是否能够提供该页面。看起来它应该基于您的配置。

于 2020-12-18T17:54:55.897 回答