前言
使用 Nginx 當作 proxy 時,可以設定 Nginx 作為 failover 機制,但是 Nginx 判斷 node 失敗預設是以 connection refuse 和 timeout 為主,而不是以 HTTP 錯誤狀態來做判斷,因為 HTTP 只要可以回傳狀態,代表該 node 可以正常連接,因此 Nginx 會判斷該 node 是正常的。如果想要針對特定的 HTTP 錯誤來做處理,可以使用 proxy_next_upstream
參數來設定。
設定
proxy_next_upstream
Syntax: proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 | non_idempotent | off ...;
Default: proxy_next_upstream error timeout;
設定範例如下:
1 | upstream api { |
主要處理 connection refuse, timeout, 500, 502, 503 和 504 的錯誤,而加上 non_idempotent
則是因為 Nginx 預設是不會重試 non-idempotent method (POST, LOCK, PATCH), 如果要重試就需要加上此設定。
最後重新啟動 Nginx 就可以囉!