▌proxy_intercept_errors
當上游服務器響應頭回來后,可以根據響應狀態碼的值進行攔截錯誤處理,與error_page 指令相互結合。用在訪問上游服務器出現錯誤的情況下。
服務部署情況
一、主服務(nginx:80) , /usr/local/nginx/sbin/nginx
二、上游服務(nginx:8012), /usr/local/nginx_8012/nginx
上游服務器文件說明
404.html 和 404_default.html 內容:
04.html:上游服務器提供的特定404頁面內容,當nginx:80訪問上游服務器資源不存在(返回404),要求顯示的內容頁面。404_default.html:上游服務器默認404頁面。50x.html:上游服務器提供的特定50x頁面內容,當nginx:80訪問上游服務器出現50x錯誤(包含500, 502, 503和504),要求顯示的內容頁面。50x_default.html:上游服務器提供的處理50x的默認頁面
注意:
404.html 和 50x.html 是給 nginx:80配置中使用的
404_default.html 和 50x_default.html是給 nginx:8012配置中使用的
nginx:80服務中關于404和50x的配置
nginx:8012服務中關于404和50x的配置
幾種配置
一、nginx:80服務的特定location配置
1). 開啟proxy_intercept_errors2). 設置特定的 error_page, 分別處理404和50x
配置如下
@404fallback 和 @50xfallback配置見
請求測試:
當通過nginx:80服務請求上游一個不存在的資源時,響應的結果如下:
結果進行說明:
1、由于上游服務器的配置
add_header Cache-Control max-age=5;
add_header Content-Encoding gzip;
所以響應頭包含Cache-Control 和gzip頭。
2、由于nginx:80配置,當出現404時,具體內容要從上游服務器獲取。
@404fallback的配置
所以響應的內容為:
Upstream server provides a special page for representing 404.
二、上述配置不變,修改@404fallback中的資源名稱
(由404.html修改為 404_not_exists.html)
這個資源在上游服務器文件列表中并不存在
在執行請求測試時,結果如下:
對結果進行說明:
1、由于請求的 nginx:8012服務器下的 /404_not_exists.html,該資源并不存在,所以沒有匹配nginx:8012中的location / {xxx} 配置(見圖1-3)。所以響應頭沒有再增加 Cache-Control 和 gzip。
2、走到了nginx:8012的404處理流程中,所以響應內容如下,是404_default.html的內容。
Upstream default 404 page.
三、測試error_page的不同位置
1). 關閉nginx:80 location中的error_page指令
2). 為nginx:80在server級別設置error_page指令,分別設置404和50x
測試結果與一、相同
注意沒有測試修改@fallback內部的資源不存在的情況。后續再補充
四、關于error_page 的其他功能說明
1、修改error_page為:
執行測試結果為:
結果說明:
a、這種寫法可以修改響應頭的狀態碼。即可以將404或者其他5xx狀態碼修改為200。不填寫默認值是200
b、注意:等號與@404fallback之間有一個空格
c、上述配置與將 error_page 修改為 error_page 404 =200 @404fallback; 效果一樣
2、修改響應狀態碼為指定值。比如301,302等
測試結果:
總結
1、可以在特定location中將proxy_intercept_errors開啟,來處理上游服務器的特定響應狀態碼。并獲取自定義錯誤頁面的內容,同時在不改變用戶請求url的情況下,進行內容的展現。
2、可以結合error_page 來改變響應狀態碼。
-
服務器
+關注
關注
12文章
9029瀏覽量
85207 -
指令
+關注
關注
1文章
607瀏覽量
35653 -
配置
+關注
關注
1文章
187瀏覽量
18361
原文標題:結合nginx源碼學習error_page和proxy 指令的關系
文章出處:【微信號:aming_linux,微信公眾號:阿銘linux】歡迎添加關注!文章轉載請注明出處。
發布評論請先 登錄
相關推薦
評論