proxy_next_upstream 對POST無效
根據網上的教程,啟用proxy_next_upstream後發現沒有生效:
upstream login_server{
server 10.32.105.18:8080 max_fails=1 fail_timeout=30s;
server 10.32.80.75:8080 max_fails=1 fail_timeout=30s backup;
}
server {
listen 8080;
location /{
proxy_pass http://login_server;
# 重試機制,遇到這些錯誤,繼續把請求發到下一個節點
# non_idempotent:POST支援,需要放在最前面
proxy_next_upstream error timeout http_500 http_502 http_503 http_504 non_idemponent;
proxy_next_upstream_tries 2;
}
}
最後,經過排查原來是隻針對
GET生效
,針對POST等請求,需要增加
non_idempotent
,并且要放在最前面才行。
來張測試圖檔:
有2台伺服器,其中一台傳回了500,但是postman還是得到了相應(來自于另外一台好的伺服器)。
不得不感歎,Nginx真牛逼👍👍👍👍。