## 說明
當代理服務器將請求轉發給應用服務器之后,應用服務器吃吃沒有將請求響應,那么nginx是不是應該具備一些容錯機制.比如將請求轉發給下一臺應付服務器上面呢;用來提高系統的健壯性;
## proxy_next_upstream
語法:
```
proxy_next_upstream error | timeout | invalid_header | http_500 | http_502 | http_503 | http_504 | http_403 | http_404 | http_429 |non_idempotent | off
```
默認值:
```
proxy_next_upstream error timeout;
```
上下文:
```
http | server | location
```
可選值:
| 可選參數 | 含義 |
| --- | --- |
| error | 向上游服務器傳輸請求或讀取響應頭發生錯誤 |
| timeout | 向上游服務器傳輸請求或讀取響應頭發生超時 |
| invalid_header | 上游服務器返回無效的響應 |
| http_500 | HTTP響應狀態碼為500時 |
| http_502 | HTTP響應狀態碼為502時 |
| http_503 | HTTP響應狀態碼為503時 |
| http_504 | HTTP響應狀態碼為504時 |
| http_403 | HTTP響應狀態碼為403時 |
| http_404 | HTTP響應狀態碼為404時 |
| http_429 | HTTP響應狀態碼為429時 |
| non_idempotent | **非冪等請求失敗時是否需要轉發下一臺上游服務器,這里要特別注意,如果不寫這個參數,那么只會轉發GET的請求,對于post,put,delete的請求方式是不會轉發的** |
| off | 禁用請求失敗轉發功能 |
## proxy_next_upstream_timeout
代理服務器將請求轉發給應用服務器后需要等待的時間,如果超過這個值就可以將請求給下一個應用服務器了;
語法:
```
proxy_next_upstream_timeout times;
```
默認值:
```
proxy_next_upstream_timeout 0; //0是無限制等待
```
上下文:
```
http | server | location
```
## proxy_next_upstream_tries
當應用服務器無響應的時候需要調度的次數;
語法:
```
proxy_next_upstream_tries number;
```
默認值:
```
proxy_next_upstream_timeout 0; //0就是不限制調度的次數,如果設為3,就是失敗后需要調度3次,超過3次就不調度了,直接給客戶端返回錯誤;
```
上下文:
```
http | server | location
```
## proxy_intercept_errors
上游返回碼大于300時,是直接將上游響應返回客戶端還是按照error_page處理;
語法:
```
proxy_intercept_errors on | off;
```
默認值:
```
proxy_intercept_errors on;
```
上下文:
```
http | server | location
```
## 實例
因為默認proxy_next_upstream error timeout; ,即使不設置,那么一臺上游服務器掛掉了,也會調度到可用的上游服務器上;
```
location /balance {
proxy_next_upstream off; //off的情況下,因為有一臺upstream掛掉了,多次請求總會返回一次502 Bad Gateway
proxy_pass http://back_end;
}
```
## error和timeout
1. proxy_next_upstream設為error基本都是上游服務器內部錯誤導致的;
2. 設為timeout是上游服務器是正常的可以正常響應,但是響應的速度太慢,在設定的時間內沒有響應完成就會觸發;適用于超時場景
- NginX簡述
- 什么是中間件
- NginX概述
- 選擇NginX的理由
- NginX環境安裝
- 四項確認
- NginX安裝
- 安裝
- 安裝目錄詳解
- 編譯參數詳解
- Nginx主目錄
- 基于NginX的中間件架構
- Nginx日志類型
- Nginx變量
- 常見NginX中間架構
- 靜態資源web服務
- 概述
- 靜態資源服務場景-CDN
- 瀏覽器緩存原理
- 跨站訪問
- 防盜鏈
- 代理服務
- 概述
- 配置語法
- 其他配置語法
- 負載均衡調度器SLB
- 概述
- 配置
- 動態緩存
- ====分割線====
- Nginx初體驗
- nginx簡介
- 請求全流程
- nginx核心優勢
- 安裝第一個rpm包nginx
- Nginx進程結構與熱部署
- 進程結構
- 信號量管理nginx
- 配置文件重載原理真相
- nginx熱部署
- nginx模塊化管理機制
- nginx編譯安裝的配置參數
- nginx配置文件結構
- 虛擬主機的分類
- Nginx核心指令基礎應用
- main段核心參數用法
- events段核心參數用法
- HTTP段核心參數用法
- server_name
- server_name指令用法優先級
- root和alias的區別
- location的基礎用法
- location指令中匹配規則的優先級
- 深入理解location中URL結尾的反斜線
- stub_status模塊用法
- Nginx應用進階
- connection和request
- 對connection做限制的limit_conn模塊
- 對request處理速率做限制的limit_req模塊
- 限制特定IP或網段訪問的access模塊
- 限制特定用戶訪問的auth_basic模塊
- 基于HTTP響應狀態碼做權限控制的auth_request模塊
- rewrite模塊
- return指令
- rewrite指令
- return和rewrite指令執行順序
- if指令
- autoindex模塊用法
- Nginx的變量
- 變量分類
- TCP連接相關變量
- 發送HTTP請求變量
- 處理HTTP請求變量
- 反向代理
- 基礎原理
- 動靜分離
- nginx作為反向代理支持的協議
- 用于定義上游服務的upstream模塊
- upstream模塊指令用法詳解
- 配置一個可用的上游應用服務器
- proxy_pass常見誤區
- 代理場景下nginx接受用戶請求包體的處理方式
- 代理場景下Nginx更改發往上游的用戶請求
- 代理場景下Nginx與上游服務建立連接細節
- 基于fastcgi的反向代理
- 負載均衡
- 負載均衡基礎
- 實現nginx對上游服務負載均衡
- 負載均衡hash算法
- 負載均衡ip_hash算法
- 負載均衡最少連接數算法
- 針對上游服務器返回異常時的容錯機制
- Nginx緩存
- 緩存基礎
- 緩存相關指令
- 緩存用法配置示例
- 配置nginx不緩存上游服務特定內容
- 緩存失效降低上游壓力機制1-合并源請求
- 緩存失效降低上游壓力機制2-啟用陳舊緩存
- 第三方清除模塊ngx_cache_purge介紹
- ngx_cache_purge用法配置示例
- Nginx和HTTPS
- https原理基礎
- https如何解決信息被竊聽的問題
- https如何解決報文被篡改以及身份偽裝問題
- 配置私有CA服務器
- 組織機構向CA申請證書及CA簽發證書
- 深入Nginx架構
- Nginx性能優化