先说明一下背景情况,之前海天为了提高博客的速度,将google analytics的统计转移到nginx服务器层面。使用一段时间发现google analytics会将一些明显应该是404的访问也统计进去,比如恶意的猜解数据库备份文件、wordpress漏洞文件等,当时以为是wordpress的404页面设置有问题,但是通过检测,发现head返回的代码的确是404错误而不是200。
而且nginx后台设置的将访问信息转发到google analytics也的确将404排除掉了,后来查看网站日志的时候发现,在访问没有的页面和文件时,日志竟然没有记录为404错误,而是正常200。
看来wordpress在处理没有的页面和文件时,在wordpress这个层面上使用index.php输出了404错误。但并没有传到nginx服务器,对服务器来说index.php是可以正常访问的。
所以如果要使nginx传输给google analytics数据是排除掉404的,必须使用服务器404错误。
海天使用的是lnmp一键脚本安装的环境,找到网站的conf文件,本以为直接将 #error_page 404 /404.html
前面的#号去掉,就可以了,但是发现博客还是使用的wordpress设置的404页面。
解决error_page 404 无效
nginx如果想要 error_page 404 /404.html
生效,必须设置 fastcgi_intercept_errors on;
如果没有这个设置就,算设置了error_page 也没用,所以只需要在网站的配置conf文件中加上 fastcgi_intercept_errors on;
nginx设置的404页面就生效啦!
ps:这里要注意error_page 404 /404.html
中404页面的路径是相对于网站的路径,不要将在服务器的绝对路径写上去。