我有一個通過nginx proxy_pass部署的Node.js Express服務器。我有兩個paralell守護進程在使用上游負載平衡的不同端口上。 Express服務器的初始化需要時間,所以我發送Error 500直到準備就緒。我希望nginx使用其他上游服務器,直到第一個服務器準備就緒,反之亦然。如何使用Node.js Express強制使用nginx proxy_next_upstream?
我試圖使用proxy_next_upstream,但它不能正常工作。始終有至少一個顯示給用戶的錯誤500。
也許原因隱藏在nginx doc的以下句子中:「應該記住,只有在沒有任何內容發送給客戶端的情況下,才能向下一個服務器傳遞請求。」
這裏是proxy_pass配置:
proxy_pass http://node_servers ;
proxy_set_header Host $http_host;
proxy_set_header x-forwarded-for $remote_addr;
proxy_read_timeout 60; proxy_connect_timeout 60;
這些都是上行流:
upstream node_servers {
server 127.0.0.1:12005;
server 127.0.0.1:12006;
}
這就是我如何發送錯誤的節點快報:
res.status(500).send('The server is not ready yet!');
我使用了proxy_next_upstream,但即使如此它也不起作用。我懷疑Express在發生錯誤之前發送了一些內容,因此它會傳送給用戶。 – mitroo
閱讀日誌!特別是錯誤一。 –
並使用tcpdump來聲明您的懷疑 –