Board logo

标题: lnmp之nginx如何设置404错误页面 [打印本页]

作者: licess    时间: 2011-1-15 10:09     标题: lnmp之nginx如何设置404错误页面

1.创建自己的404.html页面
[del]2.更改nginx.conf在http定义区域加入:
fastcgi_intercept_errors on;
[/del]

3.更改nginx.conf或虚拟主机的域名.conf在server 区域加入:
error_page 404 /404.html;
4.测试nginx.conf正确性:
/usr/local/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
/usr/local/nginx/sbin/nginx -s reload
注意事项:
[del]1.必须要添加:fastcgi_intercept_errors on; 如果这个选项没有设置,即使创建了404.html和配置了error_page也没有效果。
[/del]2.不要出于省事或者提高首页权重的目的将首页指定为404错误页面,也不要用其它方法跳转到首页。
3.自定义的404页面必须大于512字节,否则可能会出现IE默认的404页面。例如,假设自定义了404.html,大小只有11个字节(内容为:404错误)。



作者: clzz    时间: 2011-1-16 22:34     标题: 回复 1# 的帖子

[emerg]: directive "error_page" is not terminated by ";" in /usr/local/nginx/conf/nginx.conf:64
configuration file /usr/local/nginx/conf/nginx.conf test failed


老大我按你的设置就出现上面那个错误。怎么解决啊
作者: clzz    时间: 2011-1-16 22:45

我的VPS支持伪静态,怎么弄都是不行哦。大大帮忙看看啊

[ 本帖最后由 clzz 于 2011-1-17 12:45 编辑 ]
作者: clzz    时间: 2011-1-17 17:03     标题: 回复 1# 的帖子

大大,帮帮忙呀。
作者: licess    时间: 2011-1-17 19:59     标题: 回复 2# 的帖子

按提示应该是error_page那一行少了一个;
作者: licess    时间: 2011-1-17 20:00     标题: 回复 3# 的帖子

伪静态按/root/vhost.sh添加的时候的提示写上就行了
作者: mcharlie    时间: 2011-1-26 06:12

为什么原本
http://我的域名.com/404test → wordpress错误页面
加入
复制内容到剪贴板
代码:
fastcgi_intercept_errors on;
error_page 404 = /404.html;
后,变成
http://我的域名.com/404test → 自定义404错误页面

要怎么像vps侦探
https://www.vpser.net/404test → wordpress错误页面
作者: licess    时间: 2011-1-26 10:03     标题: 回复 7# 的帖子

没加404就是显示wp的404页面,加了就显示自定义的404页面。

如果还想显示wp的404,就把自定义404去掉就行了。
作者: kua5    时间: 2011-2-19 09:45

配置好了
nginx.conf正确
自定义的404页面大于512字节
显示这样了,没显示自定义的那个
==================================
       404 Not Found

---------------------------------

           nginx/0.7.67

===========================
作者: monface    时间: 2011-2-24 16:03

fastcgi_intercept_errors on;
这句不增加貌似也没问题也
好像php的404页面无法实现哦?  结果显示403

[ 本帖最后由 monface 于 2011-2-24 16:19 编辑 ]
作者: 龙龙    时间: 2011-7-28 20:49

请问自己创建的404文件要放到什么位置?
作者: licess    时间: 2011-7-28 22:20

当前虚拟主机的web根目录
作者: 龙龙    时间: 2011-7-28 22:28

执行最后一步重启后,提示:

-bash: kill: cat: arguments must be process or job IDs
-bash: kill: /opt/nginx/nginx/pid: arguments must be process or job IDs

而且404既然没有生效
作者: 龙龙    时间: 2011-7-28 22:35

执行以下指令:

#/usr/local/nginx/sbin/nginx -s reload

nginx已经成功重启,同时404也已经生效
作者: ch99hui39    时间: 2011-8-18 16:45

请教个问题安装了lnmp-0.7并安装了lnmpa  现在想知道如何设置404
感觉不起作用!!
user  www www;
worker_processes 8;
error_log  /home/wwwlogs/nginx_error.log  crit;
pid        /usr/local/nginx/logs/nginx.pid;
#Specifies the value for maximum file descriptors that can be opened by this process.
worker_rlimit_nofile 51200;
events
        {
                use epoll;
                worker_connections 51200;
        }
http
        {
                include       mime.types;
                default_type  application/octet-stream;
                server_names_hash_bucket_size 128;
                client_header_buffer_size 32k;
                large_client_header_buffers 4 32k;
                client_max_body_size 50m;
                sendfile on;
                tcp_nopush     on;
                keepalive_timeout 60;
                tcp_nodelay on;
                fastcgi_intercept_errors 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 256k;
                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;
                server_tokens off;
                #limit_zone  crawler  $binary_remote_addr  10m;
server
        {
                listen       80;
                server_name 192.168.1.114;
                index index.php;
                error_page  404 /404.html;
                root  /home/wwwroot;

                location / {
                        try_files $uri @apache;
                        error_page  404 /404.html;
                        }

                location @apache {
                        internal;
                        proxy_pass http://127.0.0.1:88;
                        include proxy.conf;
                        }

                location ~ .*\.(php|php5)?$
                        {
                                proxy_pass http://127.0.0.1:88;
                                include proxy.conf;
                        }

                location /status {
                        stub_status on;
                        access_log   on;
                }

                location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
                        {
                                expires      30d;
                        }

                location ~ .*\.(js|css)?$
                        {
                                expires      12h;
                        }

                log_format  access  '$remote_addr - $remote_user [$time_local] "$request" '
             '$status $body_bytes_sent "$http_referer" '
             '"$http_user_agent" $http_x_forwarded_for';
                access_log  /home/wwwlogs/access.log  access;
        }
include vhost/*.conf;
}
作者: licess    时间: 2011-8-18 17:08

升级到lnmpa后再apache里用.htaccess来设置
作者: rujinyou    时间: 2012-3-17 18:20     标题: 为什么我设置404无效呢?

为什么我设置404无效呢?
我的代码
server
        {
                listen 80;
                server_name www.xxx.com xxx.com;
                index index.html index.htm index.php default.html default.htm default.php;
                root  /home/wwwroot;
                error_page 404 = /404.html

                include wordpress.conf;
                location ~ .*\.(php|php5)?$
                        {
                                fastcgi_pass  unix:/tmp/php-cgi.sock;
                                fastcgi_index index.php;
                                include fcgi.conf;
                        }

                location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$
                        {
                                expires      30d;
                        }

                location ~ .*\.(js|css)?$
                        {
                                expires      12h;
                        }
作者: rujinyou    时间: 2012-3-17 18:22     标题: 回复 1# 的帖子

我把wordpress的伪静态去掉后还是不行
作者: rujinyou    时间: 2012-3-17 18:29     标题: 回复 1# 的帖子

发现把 wp的静态规则删除后生效了
怎么可以同时做到wp静态及404生效呢?
作者: kekemyth    时间: 2012-5-27 15:34

更改nginx.conf在http定义区域加入:
fastcgi_intercept_errors on; 请问这是linux命令吗?
怎么操作啊?
作者: kekemyth    时间: 2012-5-27 17:35

我解决这个问题了

按照军哥的操作
1.创建自己的404.html页面
2.更改nginx.conf在http定义区域加入:
fastcgi_intercept_errors on;

这些都是linux的系统文件,找到文件路径、编辑、修改、保存就可以了,这两步一般都没问题。
3.更改nginx.conf或虚拟主机的域名.conf在server 区域加入:
error_page 404 /404.html;
【一般情况有两种情况:
       1、我想让我VPS下的所有虚拟主机显示同一个404页面,那么就需要
        2、我想要我的每个虚拟主机的404页面不一样,  那么我们就需要在虚拟主机的域名.conf在(路径:  /usr/local/nginx/conf/vhost )server 区域加入error_page 404 /404.html;打开编辑保存就是了】

4.测试nginx.conf正确性:
/usr/local/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 `
还有重启nginx  命令还有 #  /usr/local/nginx/sbin/nginx -s reload

[ 本帖最后由 kekemyth 于 2012-6-18 23:34 编辑 ]
作者: hixinqin    时间: 2012-11-23 17:50

谢谢军哥,成功设置了
作者: 189lg.com    时间: 2013-10-17 04:13     标题: 404错误页面自定义不成功

我在nginx.conf文件

下一行添加
         tcp_nodelay on;



fastcgi_intercept_errors on;




然后WWW.XXX.com.conf域名配置文件里面添加


try_files $uri =404;
error_page 404 /404.html;


重启nginx
/usr/local/nginx/sbin/nginx -s reload




后还是没有效果,自定义404文件大小有11KB,求解是何原因



发个错误的页面测试无效:http://www.fffec.com/vod/zichaqiyua





汗,发完帖子后貌似可以了,原来都是缓存惹的祸

[ 本帖最后由 189lg.com 于 2013-10-17 04:18 编辑 ]
作者: puffbaby    时间: 2013-10-17 09:14     标题: 回复 7# 的帖子

error_page 404 = /404.html;

这里的等号一定要去掉
不然显示的是404页面,但是返回状态码确实200
作者: puffbaby    时间: 2013-10-17 09:16     标题: 回复 1# 的帖子

军哥,一定要提醒大家 error_page 404 /404.html;  这里不能加=等号的,不然返回码是200
作者: lincs110    时间: 2015-4-29 14:47

不错啊 mark一下!!
作者: phoenix2036    时间: 2015-7-13 15:43     标题: lnmpa下404配置

需要在apache配置文件httpd.conf里加上:ErrorDocument 404 /404.html,
然后重启apache服务器就可以了: service httpd restart     或者     /usr/local/apache/bin/apachectl restart
作者: mototown    时间: 2016-9-13 23:40     标题: 回复 27# 的帖子

我的lnmpa1.2所有错误页面都在   __ErrorFiles__文件夹下,ErrorDocument 404 /404.html是写在http.conf里,还是写在网站conf里,还有/404.html这个地方相对路径要怎么写,
作者: mototown    时间: 2016-9-13 23:41     标题: 回复 16# 的帖子

我的lnmpa1.2所有错误页面都在   __ErrorFiles__文件夹下,ErrorDocument 404 /404.html是写在http.conf里,还是写在网站conf里,还有/404.html这个地方相对路径要怎么写,
作者: licess    时间: 2016-9-14 08:53     标题: 回复 29# 的帖子

httpd.conf 里的话所有虚拟主机根目录下必须要有404.html ,对应虚拟主机或.htaccess 应该也可以 放网站根目录就行。




欢迎光临 VPS侦探论坛 (http://bbs.vpser.net/) Powered by Discuz! 6.0.0