溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

記一次nginx配置自定義錯誤頁面的麻瓜經歷

發布時間:2020-06-28 12:56:57 來源:網絡 閱讀:5053 作者:whj3656 欄目:建站服務器

其實很久沒碰過nginx了,突然來了個任務就只能硬著頭皮上了。
先說下背景:
我們業務采用的是容器的形式部署,nginx做反代的結構,當用戶請求到達nginx服務器時,先判斷nginx配置的根目錄下是否存在對應的靜態文件,不存在則進行轉發。
在nginx中配置了error_page 404的跳轉規則,預期效果是請求資源/路徑不存在時,跳轉到我們自定義的404頁面,而不是那大大的還加粗了的冷冰冰的"404 Not found"。
具體配置段如下:

error_page 404 500 /404.html; #定義狀態碼為404 500時的展示頁面
location = /404.html{
    root /usr/share/nginx/html;#此資源的位置
}

剛開始的想法是,location已經有很多正確匹配到資源路徑的處理規則,而優先級最低的location / {規則X}表示未能匹配到的資源按規則X處理。
好吧,那就直接return 404不就可以了?
結果還真的是可以,但是。。。正確頁面加載不出來了,F12進入調試模式,發現頁面中很多資源請求也成是404了,尷尬沒考慮到這個問題,暫先放棄這個想法。

現在問題是nginx服務器上的默認404頁面文件已經被刪掉了,而且仔細觀察,發現更奇怪的是,下面的nginx版本號信息顯示的是1.13.0,而這個服務器的版本是1.12.2??!
記一次nginx配置自定義錯誤頁面的麻瓜經歷
記一次nginx配置自定義錯誤頁面的麻瓜經歷

冷靜,一定要冷靜
行吧,看來問題已經可以基本定位了,此時是由nginx代理的backend集群里中某一臺響應的404頁面,而不是由我們所設想的那樣,nginx-server直接響應自定義的404頁面。
好吧原因找到了,就看看有沒有相關方法能阻止一下了。。查各種資料后終于找到兩個有關的參數,而且好巧不巧這兩個參數默認是off的。
fastcgi_intercept_errors 和 proxy_intercept_errors

以下是官方介紹:

Syntax: fastcgi_intercept_errors on | off;
Default:    
fastcgi_intercept_errors off;
Context:    http, server, location
Determines whether FastCGI server responses with codes greater than or equal to 300 should be passed to a client or be intercepted and redirected to nginx for processing with the error_page directive.

友情鏈接:http://nginx.org/en/docs/http/ngx_http_fastcgi_module.html#fastcgi_intercept_errors

Syntax: proxy_intercept_errors on | off;
Default:    
proxy_intercept_errors off;
Context:    http, server, location
Determines whether proxied responses with codes greater than or equal to 300 should be passed to a client or be intercepted and redirected to nginx for processing with the error_page directive.

友情鏈接:http://nginx.org/en/docs/http/ngx_http_proxy_module.html#proxy_intercept_errors
嘛意思呢?大概就是當后端服務器的響應狀態碼大于等于300時,決定是否直接將響應發送給客戶端,亦或將響應轉發給nginx由error_page指令來處理。
當為on時,nginx會攔截error_page指令明確指定的錯誤狀態碼。如果來自被代理服務器的應答狀態碼不匹配error_page指令,應答會照常發送到客戶端。

開啟后,check并reload下配置文件。再次測試,成功!而且正常頁面也能訪問。
記一次nginx配置自定義錯誤頁面的麻瓜經歷

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

亚洲午夜精品一区二区_中文无码日韩欧免_久久香蕉精品视频_欧美主播一区二区三区美女