• NGINX 配置404错误页面转向




    什么是404页面

    如果碰巧网站出了问题,或者用户试图访问一个并不存在的页面时,此时服务器会返回代码为404的错误信息,此时对应页面就是404页面。404页面的默认内容和具体的服务器有关。如果后台用的是NGINX服务器,那么404页面的内容则为:


    404 Not Found

    nginx/0.8.6

     


    为什么要自定义404页面

    在访问时遇到上面这样的404错误页面,我想99%(未经调查,估计数据)的用户会把页面关掉,用户就这样悄悄的流失了。如果此时能有一个漂亮的页面能够引导用户去他想去的地方必然可以留住用户。因此,每一个网站都应该自定义自己的404页面。

    NGINX下如何自定义404页面

    IIS和APACHE下自定义404页面的经验介绍文章已经非常多了,NGINX的目前还比较少,凑巧我的几台服务器都是NGINX的,为了解决自家的问题特地对此作了深入的研究。研究结果表明,NGINX下配置自定义的404页面是可行的,而且很简单,只需如下几步:

    1.创建自己的404.html页面

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


    fastcgi_intercept_errors on;


    3.更改nginx.conf在server 区域加入:


    error_page 404 = /404.html


    4.测试nginx.conf正确性:


    /opt/nginx/sbin/nginx –t

    如果正确应该显示如下信息:

    the configuration file /opt/nginx/conf/nginx.conf syntax is ok
    configuration file /opt/nginx/conf/nginx.conf test is successful


    5.重启nginx


    kill -HUP  `cat /opt/nginx/nginx.pid `

     

    配置文件实例:


    ……

    http
    {
    include       mime.types;
    default_type  application/octet-stream;

    charset  gb2312;
    server_names_hash_bucket_size 128;
    client_header_buffer_size 32k;
    large_client_header_buffers 4 32k;
    client_max_body_size 8m;
    sendfile on;
    tcp_nopush     on;

    keepalive_timeout 60;

    tcp_nodelay on;

    fastcgi_connect_timeout 300;
    fastcgi_send_timeout 300;
    fastcgi_read_timeout 300;
    fastcgi_buffer_size 64k;
    fastcgi_buffers 4 64k;
    fastcgi_busy_buffers_size 128k;
    fastcgi_temp_file_write_size 128k;
    fastcgi_intercept_errors on;

    gzip on;
    gzip_min_length  1k;
    gzip_buffers     4 16k;
    gzip_http_version 1.0;
    gzip_comp_level 2;
    gzip_types       text/plain application/x-javascript text/css application/xml;
    gzip_vary on;

    #limit_zone  crawler  $binary_remote_addr  10m;

      #65的配置信息
          server
    {
       listen       80;
       server_name  www.65.la 65.la *.65.la;
       index index.html index.htm index.php;
       root  /opt/www/65;
       location ~ .*.(php|php5)?$
          
         #fastcgi_pass  unix:/tmp/php-cgi.sock;
         fastcgi_pass  127.0.0.1:9000;
         fastcgi_index index.php;
         include fcgi.conf;
       }
       error_page  404 = /404.html;

    #502 等错误可以用同样的方法来配置。
       error_page   500 502 503 504 = /50x.html;
       ocation = /50x.html {
                root   html;
            }
       log_format  65  ‘$remote_addr – $remote_user [$time_local] "$request" ‘
                  ‘$status $body_bytes_sent "$http_referer" ‘
                  ‘"$http_user_agent" $http_x_forwarded_for’;
       access_log  /opt/nginx/logs/65.log  65;
    }

    ……


     

     

    注意事项:

    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错误)。用如下两个不存在的地址去访问:


    http://www.65.la/no 将会调用自定义的404.html

    http://www.65.la/notfound:将会调用IE默认的404页面

  • 相关阅读:
    手动卸载 SQL Server 2005 Express
    标准正态分布函数数值表
    SQL Server, Error converting data type nvarchar to int
    如何修改windows XP的默认字体?
    C# 字符串格式化
    跨域cookie访问 Easy Cross Domain Cookies (Sharing cookies between domains)
    25_Android_网络通信之资讯客户端(下)
    毕业设计经验总结
    数学之路(2)四大神器haskell(28)
    java.lang.RuntimeException: Invalid action class configuration that references an unknown class name
  • 原文地址:https://www.cnblogs.com/alaricblog/p/3278206.html
Copyright © 2020-2023  润新知