贫农 2015-11-04
前言
在用nginx代理服务器的时候,会有2种情况返回404.
1.查找静态文件没有找到。
2.反向代理,后端app服务器返回的404.
静态文件查找不到到
在对应的http|server|location里配置错误页面即可,代码如下:
error_page404http://pai.suning.com/shanpai/index.htm;
反向代理返回的404错误
当使用最左匹配的时候,请求传到了app服务器,但是没有找到资源,例如:
location^~/pai{
proxy_passhttp://myserver/shanpai;
}
当随意访问以个代理的地址:/pai/1/2/3/4/5/6/resource.html
这个时候在location里配置proxy_intercept_errorson;即可,这样,就会把错误交给error_page属性处理了。
location^~/pai{
#代理处理错误,默认是关闭,否则直接返回app的错误页面
proxy_intercept_errorson;
proxy_passhttp://myserver/shanpai;
}
高级架构
当然,反向代理返回404统一返回错误页面是一种方式,但是有更好的办法。就是减小代理范围,使用精确匹配的方式。
location用"="号来处理,这样可以提高app服务器的性能。不过增加的代理配置工作量。所以两种方式各有利弊。
参考文章
http://www.51ou.com/browse/linuxjg/33046.html