nginx error_page配置

今天偶然访问了一个线上应用不存在的url,应用报错,出现了乱码。

乱码是从nginx转发的tomcat报出来的。tomcat默认处理HTML是以ISO-8859-1处理的,所以就产生了乱码。

解决这个error_page的途径我尝试了两种方法:

1、让tomcat返回正常的非乱码的error_page
tomcat的错误页是在项目的web.xml中配置的,但是除了这个之外,别无其它编码配置。在网上搜索了有人提现将.html这种页面也交由jsp servlet处理就好,我认为这种方式不好,所以直接没尝试。
我配置的web.xml如下:

<error-page>
    <error-code>500</error-code>
    <location>/error.html</location>
</error-page>

那么首先想到的就是把error.html页的返回头改掉:

<meta http-equiv="content-type" content="text/html; charset=UTF-8"/>

但是改后,不幸的是还是不行!
tomcat还是把它处理成ISO-8859-1了。杯具!

2、第二种途径是不管tomcat返回的错误页,直接使用nginx的错误页
这里要注意一件事就是一定要配置nginx这个选项:proxy_intercept_errors on;

这个选项默认在nginx是off的。所以这时候你配置的所有error_page错误页都不会生效。为此我查了好久才知道是这个原因。

我的配置:

location   / {
    proxy_set_header Host $host;
    proxy_set_header  X-Real-IP  $remote_addr;
    proxy_set_header X-Forwarded-Proto  $scheme;
    proxy_set_header X-Forwarded-For $remote_addr;
    proxy_pass http://127.0.0.1:8080;
    proxy_intercept_errors on;
}

转载于:https://www.cnblogs.com/lpwork/p/6091291.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值