当前位置: 移动技术网 > 网络运营>服务器>nginx > Nginx服务器中配置404错误页面时一些值得注意的地方

Nginx服务器中配置404错误页面时一些值得注意的地方

2019年04月20日  | 移动技术网网络运营  | 我要评论

安阳五中贴吧,男性网站,吴倩莲个人资料

换了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自我测试。

如对本文有疑问,请在下面进行留言讨论,广大热心网友会与你互动!! 点击进行留言回复

相关文章:

验证码:
移动技术网