一 總彙
① 需求背景引出
② 官方介紹
- proxy_intercept_errors on|off;
-
- 作用:當上遊響應的響應碼'大於等於'300[常見"404"、"500"等]時,應將響應'直接返回'客戶端還是nginx捕獲後"自定義"錯誤頁面'按error_page指令'處理
-
- 思考:如果開啓'on',但是沒有配置'error_page'呢?會出現什麼現象?
③ 案例講解
1)實驗環境
- 1. nginx作爲'代理'服務器 -->172.25.2.100
-
- 2. 上游服務器也是'nginx'["爲了簡單"] -->172.25.2.157
-
- 備註:也可以爲'python、tomcat、php、perl'等應用程序均可
-
- 補充:更簡單的是一個主機上'啓'兩個nginx,'端口'不一樣
2)代理服務器配置
3)上游[後端服務器]配置
4)測試1
- 1. 上面的是'nginx代理'的日誌
-
- 2. 下面的是'上游服務器'的日誌
5)測試2
6)測試3
(1)後端服務器直接斷開,nginx代理側的日誌
- 說明1:顯然請求沒有到達'後端服務',但是'nginx'還是記錄'upstream_status爲502',所以這個值'不能'表明建立了'tcp'連接
-
- 說明2:status和'upstream_status'不一定總是'一致的'
(2)思考
- ++++++++++ "思考一個問題" ++++++++++
-
- 如果'代理側'開啓攔截共功能'on',但是'error_page'沒有配置'補獲'對應的'錯誤碼',那客戶端得到的'報錯信息'是誰提供的? --> '後端的'
- 1. 上面是nginx'代理'配置 -->沒有配置'502',配置了'500、503、504'、同時'開啓攔截'
-
- 2. 下面是'後端服務器'配置
++++++++++++"測試"++++++++++++
(3)對比實驗
- 1. 上面是'nginx'代理側的日誌
-
- 2. 下面是'後端服務器'的日誌
遺留1: nginx的高級正則應用 -->命名補獲之類
遺留2:探究location @的應用場景
遺留3:error_page也可以對客戶端的請求進行直接返回錯誤頁面
</article>