繁体   English   中英

Node.js + Nginx抛出502错误的网关错误

[英]Node.js+Nginx throwing 502 bad gateway error

我刚刚将Node.js应用程序安装到开发环境。 配置是:Ubuntu 16.x PHP 7.0 Node.js 8.x Mysql PhpMyAdmin Nginx

我的节点应用程序使用端口2000,子文件夹名称为nodeapp。 尽管phpmyadmin正常打开,但Node应用程序提供了502错误的网关。

这是nginx conf文件:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
        listen 2000;

    root /home/pjsp/public_html;
    index index.php index.html index.htm index.nginx-debian.html app.js;

    server_name mydomain.com;

    location /nodeapp {
    proxy_pass http://localhost/nodeapp:2000;
    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;
}
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }

}

以下是我在/var/log/nginx/error.log文件中遇到的错误:

2018/06/02 13:13:15 [error] 32209#32209: *763 recv() failed (104: Connection reset by peer) while reading response header from upstream, client: 127.0.0.1, server: mydomain.com, request: "GET /nodeapp:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000

请帮忙!

更新:

新的配置文件:

server {
    listen 80 default_server;
    listen [::]:80 default_server;
        #listen 2000;

    root /home/pjsp/public_html;
    index index.php index.html index.htm index.nginx-debian.html app.js;

    server_name app.pajasa.com www.app.pajasa.com;

    location /nodeapp {
    proxy_pass http://localhost;
    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;
}
    location ~ \.php$ {
        include snippets/fastcgi-php.conf;
        fastcgi_pass unix:/run/php/php7.0-fpm.sock;
    }

    location ~ /\.ht {
        deny all;
    }

}

现在出现错误:

2018/06/02 14:52:35 [alert] 3026#3026: *765 768 worker_connections are not enough while connecting to upstream, client: 127.0.0.1, server: app.pajasa.com, request: "GET /nodeapp:2000 HTTP/1.1", upstream: "http://127.0.0.1:80/nodeapp:2000", host: "www.app.pajasa.com"

网址: www.app.pajasa.com/nodeapp2000

proxy_pass http://localhost:2000/nodeapp;

您的网址方案错误,始终为PROTO:// DOMAIN:PORT / PATH

您的nginx内部有一个无限循环。 这就是为什么您看到:

/nodeapp:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000:2000....

如果您的Node应用正在侦听端口2000,请不要使用listen 2000;否则,请使用listen 2000; 在Nnginx上。

然后,将其删除后,请求: http://localhost/nodeapp将传递到您的节点应用程序上。

此外,您的proxy_pass错误,应为:

 proxy_pass http://localhost:2000;

更新

您的网址错误

www.app.pajasa.com/nodeapp:2000 // INCORRECT

首先,正如我们已经提到的,如果您使用Nginx代理到Node.js APP,则不必在URL上添加端口,其次,更重要的是端口的工作方式不是:

www.app.pajasa.com:2000 // This is correct

从URL删除:2000 ,Nginx会将其代理到您的节点应用程序。

www.app.pajasa.com/nodeapp
    listen 2000;

您的nginx不应该监听应用程序端口。 在这种情况下,nginx会自我递归调用它。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM