Haproxy:如果出現 404 錯誤,請嘗試不同的後端

Haproxy:如果出現 404 錯誤,請嘗試不同的後端

我有一個 haproxy 伺服器,後面有幾個後端。後端採用循環法挑選;無論如何,如果它從所選後端得到 404,我需要它嘗試其他後端。

如果所有可存取的後端都回傳 404,haproxy 應該會向客戶端傳回 404。

那可能嗎?

答案1

不,這是不可能的(到目前為止)。

當請求發送之前發生錯誤(例如連線逾時)時,HAProxy 會重試另一台後端伺服器。如果與一台後端伺服器建立連線並傳送請求,即使是一個位元組,HAProxy 也不會嘗試使用另一台後端伺服器。

答案2

No. 是 HAProxy 擁有的最接近的東西,但如果> 0 並且與後端的連接失敗,option redispatch它只會重試不同的後端。retries它不關心來自後端的HTTP狀態代碼,它只關心​​後端是否down(無法訪問,無回應)

答案3

是的,如果我正確理解的話,可以選擇

option httpchk GET /../CheckHealth.html
http-check disable-on-404

其中CheckHealth.html 應該是可存取的資源範例,如果找不到資源並收到404 錯誤,則該節點已設定為“活動或備份軟停止進行維護”,並且循環不再向該節點發送請求,切換到僅其他人。

就像是 :

 backend backend_servers
 balance            roundrobin
 option httpchk GET /.../CheckHealth.html
 http-check disable-on-404
 server             www01 XX:YY:ZZ:KK:8180 check
 server             www02 XX:YY:ZZ:MM:8180 check
 server         www03 XX:YY:ZZ:FF:8180 check

將在 www02 上失敗,因為那裡沒有部署 WAR,並且在 www01、www03 上保持平衡,不會顯示任何故障給客戶端。

相關內容