360°网站管家_运维学院_提供最新最全的服务器运维视频教程与网站维护视频教程

 找回密码
 快速注册

QQ登录

只需一步,快速开始

搜索
热搜: 活动 交友 discuz
1 2 3 4
查看: 2704|回复: 0
打印 上一主题 下一主题

Nginx error_page配置指令

[复制链接]

823

主题

909

帖子

4623

积分

管理员

Rank: 9Rank: 9Rank: 9

积分
4623
跳转到指定楼层
楼主
发表于 2015-10-13 14:19:47 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

亲!这问题您也搜索很久了吧?不如咨询下我们吧


613049616  613049616  613049616   613049616   613049616


今天偶然访问了一个线上应用不存在的url,应用报错,出现了乱码。
乱码是从nginx转发的tomcat报出来的。tomcat默认处理HTML是以ISO-8859-1处理的,所以就产生了乱码。
解决这个error_page的途径我尝试了两种方法:
1、让tomcat返回正常的非乱码的error_page
    tomcat的错误页是在项目的web.xml中配置的,但是除了这个之外,别无其它编码配置。在网上搜索了有人提现将.html这种页面也交由jspservlet处理就好,我认为这种方式不好,所以直接没尝试。
     我配置的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;
}
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 快速注册

本版积分规则


Archiver|手机版|小黑屋|360wzgj Inc. 百度统计

GMT+8, 2024-11-1 12:44 , Processed in 0.068190 second(s), 31 queries .

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

快速回复 返回顶部 返回列表