2013-03-20 49 views
3

如果我有多個上游反向代理的nginx負載平衡,並且其中一個發生故障,我的用戶會得到一個502,還是nginx會負責重新路由到上游?Nginx上游負載平衡:自動重試502的?

+1

Nginx將使用可用的上游服務器自動響應您的用戶。如果你至少有一臺上游服務器工作,沒有人應該得到一個502. – pistache 2013-03-20 13:47:18

+1

我不知道爲什麼這是downvoted,有這個確切的問題。好問題。 – 2015-04-14 16:05:56

回答

3

documentation

如果用在與服務器錯誤的工作,企圖發生,那麼 將請求發送到以下服務器,然後直到 服務器的所有工人沒有進行測試。如果成功的答案不是 成功從所有服務器獲取,則客戶端將返回 與最後一臺服務器的工作結果。

+0

今天早上我讀到了,但是爲了回答我的問題,我需要知道什麼纔算是錯誤才能得到這種治療? 'proxy_next_upstream'默認爲'錯誤超時',但不確定是否必須在其中包含'http_502',或者如果包含那將意味着nginx能夠連接到上游,並且上游顯式返回502而不是隻是不可用 – 2013-03-20 17:11:18

+0

我認爲nginx檢查這些條件之一是真的 – gipi 2013-03-20 17:25:29

+0

順便說一句,「文檔說」錯誤發生在與服務器建立連接,傳遞請求或讀取其響應「,在這種情況下,nginx不可能讀取502狀態碼。 – gipi 2013-03-20 17:33:52

0

具體來說,你要

proxy_next_upstream error timeout invalid_header http_500 http_502 http_503 http_504; 

我把我的在「HTTP」塊所以它會是對我的許多服務的默認。不幸的是,500-504不在nginx的默認值上。