zoukankan      html  css  js  c++  java
  • 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
    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错误)。用如下两个不存在的地址去访问:
    问一个问题,创建的404页面放在哪儿呢?
    我还没去尝试

    放在哪里都可以,注意改下这行配置就可以了
    error_page 404 = /404.html;

    放在哪里都可以,注意改下这行配置就可以了
    error_page 404 = /404.html;

    也就是说,每个子站都复制一份404文件,可不可以这样
    error_page 404 = ../404.html;
    只做一套 404放在htdocs下面
    本文目前尚无任何 trackbacks 和 pingbacks.
    注 意: 评论者允许使用'@user:'的方式将自己的评论通知另外评论者。
    例如, ABC是本文的评论者之一,则使用'@ABC:'(不包括单引号)将会自动将您的评论发送给ABC。
    user必须和评论者名相匹配,区分大小写。
    本文原始链接:http://www.jbxue.com/article/3037.html

  • 相关阅读:
    mysql命令集锦
    linux 删除文件名带括号的文件
    linux下的cron定时任务
    struts2文件下载的实现
    贴一贴自己写的文件监控代码python
    Service Unavailable on IIS6 Win2003 x64
    'style.cssText' is null or not an object
    "the current fsmo could not be contacted" when change rid role
    远程激活程序
    新浪图片病毒
  • 原文地址:https://www.cnblogs.com/cfinder010/p/3203180.html
Copyright © 2011-2022 走看看