簡體   English   中英

除具有NodeJS / Express的3000以外的任何端口上的NGINX Bad Gateway 502

[英]NGINX Bad Gateway 502 on Any Port Except 3000 with NodeJS/Express

我在一些NodeJS實例前面有一個NGINX實例(1.4穩定版)。 我正在嘗試使用上游模塊像這樣與NGINX進行負載平衡:

upstream my_web_upstream {
          server localhost:3000;
          server localhost:8124;
          keepalive 64;
        }



location / {
      proxy_redirect off;
      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;
      proxy_set_header   Host                   $http_host;
      proxy_set_header   X-NginX-Proxy    true;
      proxy_set_header   Connection "";
      proxy_http_version 1.1;
      proxy_cache one;
      proxy_cache_key sfs$request_uri$scheme;
      proxy_pass         http://my_web_upstream;
        }

當端口3000上的實例不可用時,會發生此問題。 我從NGINX得到了502 Bad Gateway。

如果我將上游配置更改為僅指向一個實例,例如8124,則仍會出現502。

運行netstat顯示0個其他應用程序正在偵聽我嘗試的任何端口。

為什么NGINX報告網關錯誤? 如果其中一個實例發生故障,如何讓NGINX進行故障排除?

如果netstat顯示您的nodejs應用程序不在端口上運行,則問題在於您尚未啟動nodejs應用程序。

此nginx配置知道如何代理到nodejs應用程序,但是如果未啟動nodejs應用程序,則可以確保獲得502。 如果要在多個端口上運行它,則必須在每個端口上啟動應用程序。 因此,不要將端口3000硬編碼到NodeJS代碼中,而要使其從環境變量中獲取該端口,或者不要使用諸如pm2( https://github.com/Unitech/pm2 )之類的流程管理器生成多個實例。 這些運行之后,nginx可以代理它們。

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM