找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
网推大家坛 新闻 网站推广 建站技巧 查看内容

NGINX500 502 503 504自定义错误页面设置方法

2017-5-5 18:19| 发布者: cqxiaozhen| 查看: 143| 评论: 0

简介:网上搜了一大堆 还是不成功 其实关键步骤都没有说明白,特意总结一下 希望希望能帮助到有需要的童鞋们。1.创建自己的404.html页面 (位置是根据root 那个目录定的,先放在网站根目录下,下面在详细说明)2.更改nginx ...

网上搜了一大堆 还是不成功 其实关键步骤都没有说明白,特意总结一下 希望希望能帮助到有需要的童鞋们。

1.创建自己的404.html页面 (位置是根据root 那个目录定的,先放在网站根目录下,下面在详细说明)

2.更改nginx.conf在http定义区域加入: fastcgi_intercept_errors on;

vim /etc/nginx/nginx.conf 
  • 1
  • 1

3.关键步骤 
网上说【中在server 区域加入: error_page 404 = /404.html 或者 error_page 404 =http://www.xxx.com/404.html 
//如果是二级域名,在相应的vhost/目录下的后缀为conf的文件编辑,如在root /home/www;这行下面添加error_page 404 = /404.html 】

**实践证明 应该是在 
location /{ 
error_page 500 502 503 504 /404.html 

location 这里放error_page**

我的配置(刚接触nginx,可能有不合理的地方)

vim /etc/nginx/sites-available/localhost
  • 1
  • 1

PS好像发现需要在/etc/nginx/sites-enabled/ 目录下创建/etc/nginx/sites-available/目录里的软连接,为什么这样不太懂原理,如下图 
这里写图片描述

  server{          listen 80;          server_name ~.*;          root /var/www/html;    #       index index.html index.jsp;  #       error_page 404 =  /404.htm;  #       error_page 502 = /404.htm;  #放在这里都不生效 始终是默认的404            location ~ .*\.(js|html|mp3|gif|jpg|jpeg|png|bmp|swf|ico|css)$ #设定访问静态文件直接读取不经过tomcat                  {                          root  /var/lib/tomcat7/webapps/ROOT;                          access_log off;                          expires      30d;                  }                      location ~ (.jsp)|(.do)(.action)$                   {                          proxy_set_header      Host $host;                          error_page 500 502 503 504 /404.html; #error_page放在这个位置才会生效。404页面放在项目根目录                          proxy_pass http://127.0.0.1:8080;                   }                    location ~ .*$                  {                          proxy_set_header Host $host;                          error_page 500 502 503 504 /404.html;                          proxy_pass http://127.0.0.1:8080;                  }                    location *$                  {                          proxy_set_header Host $host;                          error_page 500 502 503 504 /404.html;                          proxy_pass http://127.0.0.1:8080;                  }                     location  ^~ /dwr/  #针对dwr的请求走tomcat                  {                          proxy_set_header Host $host;                          error_page 500 502 503 504 /404.html;                          proxy_pass http://127.0.0.1:8080;                  }      }  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50

注意事项:

1.必须要添加:fastcgi_intercept_errors on; 如果这个选项没有设置,即使创建了404.html和配置了error_page也没有效果。fastcgi_intercept_errors 语法: fastcgi_intercept_errors on|off 默认: fastcgi_intercept_errors off 添加位置: http, server, location 默认情况下,nginx不支持自定义404错误页面,只有这个指令被设置为on,nginx才支持将404错误重定向。这里需要注意的是,并不是说设置了fastcgi_intercept_errors on,nginx就会将404错误重定向。在nginx中404错误重定向生效的前提是设置了fastcgi_intercept_errors on,并且正确的设置了error_page这个选项(包括语法和对应的404页面)

2.不要出于省事或者提高首页权重的目的将首页指定为404错误页面,也不要用其它方法跳转到首页。

3.自定义的404页面必须大于512字节,否则可能会出现IE默认的404页面。例如,假设自定义了404.html,大小只有11个字节(内容为:404错误)。

一个简单的404.html

  <!DOCTYPE html>  <html>  <head>  <meta http-equiv="content-type" content="text/html; charset=utf-8">  <title>404</title>  <style type="text/css" media="screen">  body {background-color:#CCE8CF;text-align:center;}  a {font-family:"微软雅黑";color:#16708C;text-decoration:none;}  a:hover {color:#21ADB7;text-decoration:underline;}  </style>  </head>  <body>  <img src="http://3.url.cn/qun/create/img/404.jpg">  <br/>  <a href="/" >O~ NO 404</a>  <script type="text/javascript">  var $img = new Image();  $img.src = 'http://jsreport.qq.com/cgi-bin/report?id=167&rs=0-0-215961&r='+Math.random();  </script>  </body>  </html>
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22

今天下午该配置文件 神奇的事情发生了!error_page放在server里居然能生效!不知道是不是因为重启了机器的缘故! 
改进之后的配置如下

 server{          listen 80;          server_name ~.*;            root  /var/lib/tomcat7/webapps/ROOT;         # root /var/www/html;          index index.html index.jsp;  #据说这是全局的          error_page   500 502 503 504 404   /404.html;  #location貌似是按顺序匹配的。所以有先后顺序               #正则^~ /dwr/  匹配dwr开始的请求 项目中dwr请求要经过tomcat所以需要代理                   location  ^~ /dwr/  #^~ 这个代表符合后不匹配其他的location了                  {                          proxy_set_header Host $host;                          proxy_pass http://127.0.0.1:8080;                   }               location  ^~ /data/  #tomcat的映射路径 挂载的硬盘里                   {    #这样静的似乎拿不到只能交给tomcat去处理了                       #   root /data/customfiles/photos/;                       #   expires    30d;                       proxy_set_header      Host $host;                       proxy_pass http://127.0.0.1:8080;                 }            location ~ .*\.(jpg|js|html|mp3|gif|jpeg|png|bmp|swf|ico|css)$ #设定访问静态文件直接读取不经过tomcat                  {                          root  /var/lib/tomcat7/webapps/ROOT;                          access_log off;                          expires      30d;                  }                    location ~ (.jsp)|(.do)(.action)$                   {                          proxy_set_header      Host $host;                          proxy_pass http://127.0.0.1:8080;                   }                  location ~ .*$                  {                          proxy_set_header Host $host;                          proxy_pass http://127.0.0.1:8080;                  }                    location *$                  {                          proxy_set_header Host $host;                          proxy_pass http://127.0.0.1:8080;                  }  }  
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27
  • 28
  • 29
  • 30
  • 31
  • 32
  • 33
  • 34
  • 35
  • 36
  • 37
  • 38
  • 39
  • 40
  • 41
  • 42
  • 43
  • 44
  • 45
  • 46
  • 47
  • 48
  • 49
  • 50
  • 51
  • 52

最后再看看效果 
两台一模一样的服务器 一台配置了nginx动静分离。静态资源不经过tomcat。 
这里写图片描述

收藏 分享 邀请
鲜花
鲜花
握手
握手
雷人
雷人
路过
路过
鸡蛋
鸡蛋

看过本文的人还看过

已有 0 人参与

会员评论

推荐阅读

返回顶部