换了VPS之后的某一天,在Google管理员工具控制台下看到了大量的"软404"错误,查找了一些资料之后发现是自己在Nginx下配置404页面的方法不对才导致了错误的产生,在此记录一下Nginx下正确的404页面配置方法。
404是一个相应代码,表示"页面无法找到"(Page Not Found),Google关于"软404"给出的说法是:
Instead of returning a 404 response code for a non-existent URL, websites that serve "soft 404s" return a 200 response code.
就是说对于那些不存在的URL,服务器并没有返回404(Page Not Found)代码,而是返回了200(OK)代码,而这是不正常的。
之后在其它的搜索结果里我又看到了这样一段话
Soft 404s can occur as a result of configuration errors when an Error Document 404 is specified as an absolute path rather than a relative path.
看完之后恍然大悟,因为我的404自定义页面是有图片和CSS的,而图片跟CSS都是以相对路径(eg. /xxx/xxx)写在页面里的,所以为了能让整站都能看到404页面里的图片,我就把404页面在Nginx里定义成了绝对路径(eg. //www.slyar.com/xxx/xxx),由于页面被当成了外部页面,所以会返回200代码,由此产生了"软404"错误。
知道了错误,那就好办了。将404页面的路径定义为相对路径,至于图片和CSS,只要在页面里使用绝对路径即可。
Nginx下正确的404页面定义方法:
1、VIM编辑Nginx配置文件,用了vhosts的就单独改,没用的直接改nginx.conf
vim /usr/local/nginx/conf/nginx.conf
or
vim /usr/local/nginx/conf/vhosts/slyar.com.nginx.conf
2、以相对路径指定404页面
server { #error_page 404 //www.slyar.com/404.html error_page 404 /404.html; }
3、:wq保存退出,重新加载Nginx
/usr/local/nginx/sbin/nginx -s reload
4、重新检查一下不存在的页面,看是否返回404
curl -I //www.slyar.com/slyar HTTP/1.1 404 Not Found Server: nginx/1.0.15 Date: Mon, 27 Aug 2012 08:13:56 GMT Content-Type: text/html Content-Length: 2110 Connection: keep-alive
5.隐藏Nginx出错页面及Header上的版本号
Nginx在出错页面,例如403和404页上会默认显示Nginx的版本号,这是非常不安全的,黑客可能会通过你的Nginx版本号获知如何入侵你的服务器,因为特定版本的服务器程序可能会存在某些漏洞。
Nginx的版本号通常会出现在2个地方:
1、HTTP Header,例如 Server:nginx/1.x.x 等信息会暴露Web服务器所用软件名称以及版本号
2、在403和404等出错页面上,默认会显示 Nginx 1.x.x 等版本信息
隐藏Nginx版本号非常简单,官方已经给出了非常好的解决方案,利用server_tokens (Whether to send the Nginx version number in error pages and Server header)
打开配置文件Nginx.conf,然后在http一段中增加下面的参数
http { ...其它配置 server_tokens off; }
之后 nginx -s reload 重载Nginx配置,如此就可以隐藏掉Nginx的版本号了。可以使用curl自我测试。
本文向大家介绍NGINX服务器配置404错误页面转向的方法,包括了NGINX服务器配置404错误页面转向的方法的使用技巧和注意事项,需要的朋友参考一下 什么是404页面 如果碰巧网站出了问题,或者用户试图访问一个并不存在的页面时,此时服务器会返回代码为404的错误信息,此时对应页面就是404页面。404页面的默认内容和具体的服务器有关。如果后台用的是NGINX服务器,那么404页面的内容则为:40
本文向大家介绍Nginx服务器中414错误和504错误的配置解决方法,包括了Nginx服务器中414错误和504错误的配置解决方法的使用技巧和注意事项,需要的朋友参考一下 414 Request-URI Too Large 当http 的URI太长或者request header过大时会报414 Request URI too large或400 bad request错误。 可能原因 场景1.c
本文向大家介绍Nginx中404页面的配置及AJAX请求返回404页面的方法,包括了Nginx中404页面的配置及AJAX请求返回404页面的方法的使用技巧和注意事项,需要的朋友参考一下 404页面基础配置 404错误是WWW网站访问容易出现的错误。最常见的出错提示:404 NOT FOUND。404错误页的设置对网站SEO有很大的影响,而设置不当,比如直接转跳主页等,会被搜索引擎降权拔毛。404
本文向大家介绍Nginx服务器相关的一些安全配置建议,包括了Nginx服务器相关的一些安全配置建议的使用技巧和注意事项,需要的朋友参考一下 Nginx是当今最流行的Web服务器之一。它为世界上7%的web流量提供服务而且正在以惊人的速度增长。它是个让人惊奇的服务器,我愿意部署它。 下面是一个常见安全陷阱和解决方案的列表,它可以辅助来确保你的Nginx部署是安全的。 1. 在配置文件中小心使用"i
主要内容:1. 设置虚拟服务器,2. 配置位置,3. 使用变量,4. 返回特定状态码,重写URI请求,5. 重写HTTP响应本文介绍如何将NGINX配置作为Web服务器,并包括以下部分: 设置虚拟服务器 配置位置 使用变量 返回特定状态码 重写请求中的URI 重写HTTP响应 处理错误 在高层次上,将NGINX配置作为Web服务器有一些问题需要了解,定义它处理哪些URL以及如何处理这些URL上的资源的HTTP请求。 在较低层次上,配置定义了一组控制对特定域或IP地址的请求的处理的虚拟服务器。 用
既然我不能复制它,我想知道我如何才能追踪这个问题?