Nginx

在循環網路伺服器程序重啟中避免 502 Bad gateway

  • July 25, 2012

我在我的伺服器上部署了一個負載均衡器/反向代理(nginx 或 cherokee,不管哪個),它在循環設置中指向多個後台 Web 伺服器程序(gunicorn 或 cherrypy,不管哪個) .

為了最大限度地減少停機時間,我有一個網路伺服器重啟腳本,它會殺死一個特定的網路伺服器程序(比如說 8 個程序),然後立即再次啟動它;然後繼續下一個網路伺服器程序(殺死它,然後重新啟動它),所以在任何時候,我的反向代理總是至少有 7 個程序可以指向。

這很棒; 但是有沒有辦法“完善”這個過程,讓我根本沒有得到 502 Bad gateway? 502 網關發生在使用者碰巧在站點上並使用臨時殺死並恢復的網路伺服器程序時。

顯然,我需要重啟腳本的原因是為了在我的 python 應用程序中部署新的 python 程式碼(在 gunicorn 或 cherrypy 上執行)。

nginx 應該開箱即用。 如果所選的初始伺服器無法訪問, proxy_next_upstream的預設error timeout設置會將請求傳遞給上游塊的下一個成員。

你為什麼要殺獨角獸?只需像任何其他行為良好的 Unix 程序一樣向它發送一個 SIGHUP,它就會愉快地重新載入而不會失去任何連接。

引用自:https://serverfault.com/questions/410974