nginx的反向代理upstream失敗重試策略詳解
默認(rèn)只有被動健康檢測
upstream nginxtest{
#默認(rèn)使用輪詢節(jié)點(diǎn)分配請求
#max_fails默認(rèn)=1,fail_timeout默認(rèn)=10s;
server localhost:8080 weight=5 max_fails=2 fail_timeout=5s;
server localhost:8082 weight=1 max_fails=2 fail_timeout=5s;
}
server {
listen 18080;
server_name localhost;
location / {
proxy_pass http://nginxtest;
#proxy_next_upstream http_500;#默認(rèn)是error、timeout、幕等請求會重試
root html;
index index.html index.htm;
}
}
- fail_timeout:時間段內(nèi)計(jì)數(shù)失敗次數(shù)
- max_fails:需要fail_timeout時間段統(tǒng)計(jì)的失敗次數(shù)
兩個參數(shù)說明:在5秒時間段時,處理請求失敗2次,則標(biāo)記為不可用狀態(tài)
重要的一點(diǎn)說明:fail_timeout還有一個作用,標(biāo)記為不可用狀態(tài)的節(jié)點(diǎn),在等待5秒后,會被嘗試分配一個請求過來以便檢測是否恢復(fù)可用狀態(tài)!!!
默認(rèn)重試機(jī)制
當(dāng)我們關(guān)閉一個節(jié)點(diǎn)時,發(fā)現(xiàn)nginx還是正常處理了請求,只是某一次請求等待時間變長了
以下為jmeter一秒一次請求,斷開一個節(jié)點(diǎn)后,發(fā)現(xiàn)請求正常,但某一次明顯等待長才返回成功

斷開節(jié)點(diǎn)后,會是網(wǎng)絡(luò)錯誤,所以會重試其他節(jié)點(diǎn)處理;
重試策略配置
location / {
proxy_pass http://nginxtest;
proxy_next_upstream error timeout http_404; #off表示不重試
proxy_next_upstream_timeout 6s;
proxy_next_upstream_tries 3;
}
- proxy_next_upstream :指定哪些狀態(tài)需要重試,默認(rèn)開啟(off顯示關(guān)閉),但404/500/post等請求不會重試,除非顯示指定;
- proxy_next_upstream_timeout :重試轉(zhuǎn)發(fā)超時時間
- proxy_next_upstream_tries:重試次數(shù)
非等冪方法(POST、LOCK、PATCH),請求失敗后不會再到其他服務(wù)器進(jìn)行重試。加上non_idempotent選項(xiàng)后,即使是非冪等請求類型(例如POST請求),發(fā)生錯誤后也會重試。
不合理的重試策略,會減弱nginx的處理能力
另:代理超時配置
location / {
proxy_connect_timeout 20s;
proxy_read_timeout 20s;
proxy_send_timeout 20s;
}
- proxy_connect_timeout :代理連接超時
- proxy_read_timeout:代理超時
- proxy_send_timeout :對應(yīng)的代理超時
總結(jié)
以上為個人經(jīng)驗(yàn),希望能給大家一個參考,也希望大家多多支持腳本之家。
相關(guān)文章
詳解Nginx服務(wù)器中配置Sysguard模塊預(yù)防高負(fù)載的方案
這篇文章主要介紹了詳解Nginx服務(wù)器中配置Sysguard模塊預(yù)防高負(fù)載的方案,該模塊由阿里巴巴的團(tuán)隊(duì)開發(fā),能夠設(shè)置負(fù)載閥值,比較強(qiáng)大,需要的朋友可以參考下2016-01-01
Nginx常用命令和部署詳解以及實(shí)戰(zhàn)案例示范
這篇文章主要介紹了Nginx的常用命令和在不同環(huán)境下的部署方法,包括在CentOS和Docker中部署Nginx,并詳細(xì)說明了如何配置Nginx以實(shí)現(xiàn)實(shí)時刷新數(shù)據(jù)和數(shù)據(jù)分析系統(tǒng)的場景,文中通過代碼介紹的非常詳細(xì),需要的朋友可以參考下2025-02-02
Nginx防止直接用IP訪問Web服務(wù)器的設(shè)置方法
看了很多Nginx的配置,好像都忽略了ip直接訪問Web的問題,這樣理論上不利于SEO優(yōu)化,所以我們希望可以避免直接用IP訪問網(wǎng)站,而是域名訪問,具體怎么做呢,看下面2012-09-09
WordPress與Drupal的Nginx配置rewrite重寫規(guī)則示例
這篇文章主要介紹了WordPress與Drupal的Nginx配置重寫規(guī)則示例,文中介紹的rewrite寫法簡單而突出配置重點(diǎn),需要的朋友可以參考下2016-01-01
Nginx設(shè)置Referer來防止盜圖的實(shí)現(xiàn)方法
這篇文章主要介紹了Nginx設(shè)置Referer來防止盜圖的實(shí)現(xiàn)方法,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2019-04-04

