當請求到達web服務器,nginx先根據配置判斷請求是否做了靜態化,沒有則轉發到配置指定的後端服務器。當後端出現異常時,如果後端不配置錯誤返回或者在nginx就用error_page做異常跳轉,直接就把後端的異常返回去了
1、改配置,在nginx.conf的http區域加入
#當被代理的後端響應狀態碼>=300時,直接將響應發送給客戶端,或配置nginx將響應轉error_page來處理。
proxy_intercept_errors on;
#當FastCGI後端響應狀態碼>=300時,直接將響應發送給客戶端,或配置nginx將響應轉error_page來處理。
fastcgi_intercept_errors on;
2、在nginx.conf的server區加入
error_page 403 404 /40x.html;
error_page 500 501 502 503 504 /50x.html;
location = /40x.html {
root html/errorpage;
location = /50x.html {
root html/errorpage/; #錯誤頁面40x/50x.html的路徑。大於512字節,否則會跳到IE默認的404錯誤頁面
}
3、測試配置並重啓
nginx -t
nginx -s reload
然後瀏覽器模擬訪問不存在的頁面看看,看是否跳到指定的錯誤頁面