Apache和Nginx出错页面的区别

本文详细介绍了Nginx和Apache在处理HTTP错误页面时的不同之处,以及如何通过注释特定配置来解决Nginx不显示web.xml配置的出错页面的问题。

对于HTTP 4XX,5XX的出错页面,通常会有以下几种处理方法:

 

1. Apache ErrorDocument

2. Nginx error_page

3. web.xml error-page

4. 应用框架(webx3,Struts)

 

 

问题:

这段时间应用的apache升级为nginx,发现了一个问题,apache和nginx处理出错页面稍有不同。

Apache: 在ErrorDocument配置404A.html,并同时在web.xml的error-page中配置404B.html。访问应用不存在页面,会显示404B.html

 

Nginx: 但是在nginx中,出错页面不会显示web.xml中的配置而直接显示nginx配置的出错页面。

 

 

原因:

经过网上查找了相关资料,发现有可能是下面两个配置开启的原因。

    proxy_intercept_errors on;
    fastcgi_intercept_errors on;

咨询大牛后,了解,注释这两行即可。经试验确实如此。

 

 

后续:

fastcgi_intercept_errors
语法:fastcgi_intercept_errors on|off
默认值:fastcgi_intercept_errors off
使用字段:http, server, location
这个指令指定是否传递4xx和5xx错误信息到客户端,或者允许nginx使用error_page处理错误信息。
你必须明确的在error_page中指定处理方法使这个参数有效,正如Igor所说“如果没有适当的处理方法,nginx不会拦截一个错误,这个错误不会显示自己的默认页面,这里允许通过某些方法拦截错误。

proxy_intercept_errors
语法:proxy_intercept_errors [ on|off ]
默认值:proxy_intercept_errors off
使用字段:http, server, location
使nginx阻止HTTP应答代码为400或者更高的应答。
默认情况下被代理服务器的所有应答都将被传递。
如果将其设置为on则nginx会将阻止的这部分代码在一个error_page指令处理,如果在这个error_page中没有匹配的处理方法,则被代理服务器传递的错误应答会按原样传递。

 

 

 

这两个指令效果的区别:如果你和后端是proxy方式,那设置了fastcig没用。反之也是。

 

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值