背景描述: 用nginx自定義後端節點502頁面,web項目是用java開發的+tomcat中間件。即: 前端nginx,代理後端tomcat。html
需求: 當後端tomcat節點出現宕機不能訪問時候,顯示自定義頁面。而不是光禿禿的默認502頁面顯示。
中間折騰了許久,仍是未能完全解決。問銘哥尋求解決方法,參考銘哥給出的方法:http://blog.lishiming.net/?p=37下提供了思路前端
今天從新整理了下,完成配置以下:java
server {nginx
listen *:80;web
server_name www.hmh.com;後端
root /usr/share/nginx/html;tomcat
access_log /var/opt/nginxlog/default/access_log main;服務器
error_log /var/opt/nginxlog/default/error_log error;ide
proxy_intercept_errors on; //這行關鍵配置.net
recursive_error_pages on; //這行是關鍵配置
location ~ /* {
error_page 502 @502;
proxy_pass http://syt;
}
location @502 {
root html/502;
error_page 502 /index.html;
}
}
解決後端tomcat節點異常,顯示自定義502頁面(放在nginx上)問題。
說明: proxy_intercept_errors on; 當上遊服務器響應頭回來後,能夠根據響應狀態碼的值進行攔截錯誤處理,與error_page 指令相互結合。用在訪問上游服務器出現錯誤的狀況下。recursive_error_pages on; 可讓下面的location @502生效