【问题标题】:Node.js+Nginx throwing 502 bad gateway errorNode.js+Nginx 抛出 502 bad gateway 错误
【发布时间】:2018-11-12 09:58:34
【问题描述】:

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

我的节点应用程序使用端口 2000,子文件夹名称是 nodeapp。虽然 phpmyadmin 正常打开,但 Node 应用程序给出 502 Bad gateway。

这里是 nginx 配置文件:

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/nodeapp:2000

【问题讨论】:

    标签: node.js nginx ubuntu-16.04


    【解决方案1】:

    你的 nginx 中有一个无限循环。这就是你看到的原因:

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

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

    在你放弃之后,请求: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
    

    【讨论】:

    • 谢谢,我按照你的建议改了,现在日志错误改如下: 2018/06/02 13:32:46 [alert] 2367#2367: *2293 768 worker_connections are not enough while连接到上游,客户端:127.0.0.1,服务器:app.pajasa.com,请求:“GET /nodeapp:2000 HTTP/1.1”,上游:“127.0.0.1:80/nodeapp:2000”,主机:“www.app.pajasa.com”
    • 谢谢 .. 现在也一样,错误是:[error] 2476#2476: *1 connect() failed (111: Connection refused) while connection to upstream, client: 175.100.142.211, server :app.pajasa.com,请求:“GET /nodeapp:2000 HTTP/1.1”,上游:“127.0.0.1:2000/nodeapp:2000”,主机:“www.app.pajasa.com”
    • 抱歉,您没有正确执行此操作,您请求:/nodeapp:2000,这是无效的。只需请求:http://localhost/nodeapp 你在任何地方都不需要 2000,Nginx 会为你处理端口转发,这就是使用 nginx 的全部意义
    • 现在错误是:3026#3026: *765 768 worker_connections 连接上游时不够用,客户端:127.0.0.1,服务器:app.pajasa.com,请求:“GET /nodeapp:2000 HTTP/1.1”,上游:“127.0.0.1:80/nodeapp:2000”,主机:“www.app.pajasa.com”
    • 你的节点服务器在运行吗?再次发布完整的 nginx 配置,并确保您的应用正在运行:curl http://localhost:2000 它输出什么?
    【解决方案2】:

    proxy_pass http://localhost:2000/nodeapp;

    你的 URL 方案是错误的,它总是 PROTO://DOMAIN:PORT/PATH

    【讨论】:

    • CHanged ,但现在出现以下错误:[alert] 2367#2367: *2293 768 worker_connections 连接上游时不够用,客户端:127.0.0.1,服务器:app.pajasa.com,请求:“GET /nodeapp:2000 HTTP/1.1”,上游:“127.0.0.1:80/nodeapp:2000”,主机:“www.app.pajasa.com”
    【解决方案3】:
        listen 2000;
    

    你的 nginx 不应该监听应用端口。在这种情况下,nginx 会递归调用它。

    【讨论】:

    • 谢谢,我对此发表了评论,并将代理通行证更改为 proxy_pass localhost/nodeapp;现在错误正在对此进行更改:[alert] 2367#2367: *2293 768 worker_connections 在连接到上游时不够用,客户端:127.0.0.1,服务器:app.pajasa.com,请求:“GET /nodeapp:2000 HTTP /1.1”,上游:“127.0.0.1:80/nodeapp:2000”,主机:“www.app.pajasa.com”
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-08-01
    • 1970-01-01
    • 2018-04-23
    • 2017-12-30
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多