[轉帖]nginx(三十一)proxy_intercept_errors指令應用

一   總彙

①   需求背景引出

②   官方介紹

  1. proxy_intercept_errors on|off;
  2. 作用:當上遊響應的響應碼'大於等於'300[常見"404""500"等]時,應將響應'直接返回'客戶端還是nginx捕獲後"自定義"錯誤頁面'按error_page指令'處理
  3. 思考:如果開啓'on',但是沒有配置'error_page'呢?會出現什麼現象?

③  案例講解

1)實驗環境

  1. 1. nginx作爲'代理'服務器 -->172.25.2.100
  2. 2. 上游服務器也是'nginx'["爲了簡單"] -->172.25.2.157
  3. 備註:也可以爲'python、tomcat、php、perl'等應用程序均可
  4. 補充:更簡單的是一個主機上'啓'兩個nginx,'端口'不一樣

2)代理服務器配置

3)上游[後端服務器]配置

 4)測試1 

  1. 1. 上面的是'nginx代理'的日誌
  2. 2. 下面的是'上游服務器'的日誌

5)測試2

6)測試3

 (1)後端服務器直接斷開,nginx代理側的日誌

  1. 說明1:顯然請求沒有到達'後端服務',但是'nginx'還是記錄'upstream_status爲502',所以這個值'不能'表明建立了'tcp'連接
  2. 說明2:status和'upstream_status'不一定總是'一致的'

(2)思考

  1. ++++++++++ "思考一個問題" ++++++++++
  2. 如果'代理側'開啓攔截共功能'on',但是'error_page'沒有配置'補獲'對應的'錯誤碼',那客戶端得到的'報錯信息'是誰提供的? --> '後端的'

  1. 1. 上面是nginx'代理'配置 -->沒有配置'502',配置了'500、503、504'、同時'開啓攔截'
  2. 2. 下面是'後端服務器'配置

++++++++++++"測試"++++++++++++

  

 (3)對比實驗

  

  1. 1. 上面是'nginx'代理側的日誌
  2. 2. 下面是'後端服務器'的日誌

 參考鏈接

 nginx模擬死循環

 nginx的internal指令

遺留1: nginx的高級正則應用 -->命名補獲之類

遺留2:探究location @的應用場景

遺留3:error_page也可以對客戶端的請求進行直接返回錯誤頁面

</article>
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章