背景描述: 用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生效