ngx_http_proxy_module 模塊中 proxy_next_upstream 指令
語法:
proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 |http_404 | off ...;
默認值: proxy_next_upstream error timeout;
上下文: http, server, location
參數解析:
error # 和後端服務器建立連接時,或者向後端服務器發送請求時,或者從後端服務器接收響應頭時,出現錯誤
timeout # 和後端服務器建立連接時,或者向後端服務器發送請求時,或者從後端服務器接收響應頭時,出現超時
invalid_header # 後端服務器返回空響應或者非法響應頭
http_500 # 後端服務器返回的響應狀態碼爲500
http_502 # 後端服務器返回的響應狀態碼爲502
http_503 # 後端服務器返回的響應狀態碼爲503
http_504 # 後端服務器返回的響應狀態碼爲504
http_404 # 後端服務器返回的響應狀態碼爲404
off # 停止將請求發送給下一臺後端服務器
應用場景:
1、提高訪問成功率:
配置:
proxy_next_upstream http_500 | http_502 | http_503 | http_504 |http_404;
說明:當其中一臺upstream返回錯誤碼404,500...等錯誤時,將請求分配到下一臺服務器程序繼續處理,提高平臺訪問成功率,多可運用於前臺程序負載;
2、同一請求多臺服務器重複處理
因爲 proxy_next_upstream 的默認值: proxy_next_upstream error timeout;
場景:當訪問A時,A返回error timeout時,訪問會繼續分配到下一臺服務器處理,就等於一個請求分發到多臺服務器,就可能出現多次處理的情況,如果涉及到充值,就有可能充值多次的情況,這種情況下就要把proxy_next_upstream關掉。
proxy_next_upstream off;