背景描述: 用nginx自定义后端节点502页面,web项目是用java开发的+tomcat中间件。即: 前端nginx,代理后端tomcat。
需求: 当后端tomcat节点出现宕机不能访问时候,显示自定义页面。而不是光秃秃的默认502页面显示。
中间折腾了许久,还是未能彻底解决。问铭哥寻求解决方法,参考铭哥给出的方法:http://blog.lishiming.net/?p=37下提供了思路
今天重新整理了下,完成配置如下:
server {
listen *:80;
server_name www.hmh.com;
root /usr/share/nginx/html;
access_log /var/opt/nginxlog/default/access_log main;
error_log /var/opt/nginxlog/default/error_log error;
proxy_intercept_errors on; //这行关键配置
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生效
转载于:https://blog.51cto.com/goldstar52/2136279