[英]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.