nginx做反向代理時,作爲負載均衡器,對執行失敗的任務默認會調度到其他節點執行。
默認設置:proxy_next_upstream error timeout #
發生網絡錯誤以及超時,纔會在其他服務器重試
$ proxy_next_upstream error timeout http_500 #500時重試
$ proxy_next_upstream error timeout http_502 #502時重試
$ proxy_next_upstream error timeout http_503 #503時重試
需要特別注意的時,put,get類冪等方法重試是沒有問題的。對於post方法是非冪等請求,默認針對post方法是不會重試的。比如創建訂單請求,前端的超時,後端如果重試,可能會出現創建多個訂單情況。如果非要開啓post方法的重試(線上一般不會開啓),加上non_idempotent參數。
$ proxy_next_upstream error timeout http_500 non_idempotent;#500重試,包括post,lock,path方法