本日偶尔会见了一个线上应用不存在的url,应用报错,呈现了乱码。
乱码是从nginx转发的tomcat报出来的。tomcat默认处理惩罚HTML是以ISO-8859-1处理惩罚的,所以就发生了乱码。
序列号 | CPU | RAM | HDD | 带宽 | 售价(美元) | 免费试用 |
---|---|---|---|---|---|---|
香港服务器1 | E5-2620 | 32G | 1T HDD | 50M/无限流量 | $196.00 | 立即申请 |
香港服务器2 | E5-2650 | 32G | 1T HDD | 50M/无限流量 | $256.00 | 立即申请 |
香港服务器3 | E5-2680 | 32G | 1T HDD | 50M/无限流量 | $316.00 | 立即申请 |
香港服务器4 | E5-2690 | 32G | 1T HDD | 50M/无限流量 | $336.00 | 立即申请 |
香港服务器5 | E5-2697 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器6 | E5-2620*2 | 32G | 1T HDD | 50M/无限流量 | $376.00 | 立即申请 |
香港服务器7 | E5-2650*2 | 32G | 1T HDD | 50M/无限流量 | $436.00 | 立即申请 |
香港服务器8 | E5-2680*2 | 32G | 1T HDD | 50M/无限流量 | $476.00 | 立即申请 |
香港服务器9 | E5-2690*2 | 32G | 1T HDD | 50M/无限流量 | $556.00 | 立即申请 |
香港服务器10 | E5-2697*2 | 32G | 1T HDD | 50M/无限流量 | $596.00 | 立即申请 |
香港服务器11 | E5-2680v4*2 | 32G | 1T HDD | 50M/无限流量 | $696.00 | 立即申请 |
香港服务器12 | E5-2698v4*2 | 32G | 1T HDD | 50M/无限流量 | $796.00 | 立即申请 |
办理这个error_page的途径我实验了两种要领:
1、让tomcat返回正常的非乱码的error_page
tomcat的错误页是在项目标web.xml中设置的,荷兰服务器英国主机租用,可是除了这个之外,别无其它编码设置。在网上搜索了有人提现将.html这种页面也交由jspservlet处理惩罚就好,我认为这种方法欠好,所以直接没实验。
我设置的web.xml如下:
那么首先想到的就是把error.html页的返转头改掉:
tomcat照旧把它处理惩罚成ISO-8859-1了。杯具!
2、第二种途径是不管tomcat返回的错误页,直接利用nginx的错误页
这里要留意一件事就是必然要设置nginx这个选项:proxy_intercept_errors on;
这个选项默认在nginx是off的。
所以这时候你设置的所有error_page错误页都不会生效。为此我查了良久才知道是这个原因。
我的设置:
location/{proxy_set_headerHost$host;proxy_set_headerX-Real-IP$remote_addr;proxy_set_headerX-Forwarded-Proto$scheme;proxy_set_headerX-Forwarded-For$remote_addr;proxy_passhttp://127.0.0.1:8080;proxy_intercept_errorson;}