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

 更新时间:2016年01月06日 11:37:05   作者:姜南  
这篇文章主要介绍了Nginx服务器中配置404错误页面时一些值得注意的地方,包括隐藏Nginx出错页面及Header上的版本号的安全方法,需要的朋友可以参考下

换了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配置负载均衡时访问地址无法生效的解决方法

    Nginx配置负载均衡时访问地址无法生效的解决方法

    本文主要介绍了Nginx配置负载均衡时访问地址无法生效的解决方法,例如负载均衡策略的设置是否正确、是否存在拼写错误等,下面就来详细的介绍一下,感兴趣的可以了解一下
    2023-09-09
  • nginx安装完成无法解析php解决方法

    nginx安装完成无法解析php解决方法

    大家好,本篇文章主要讲的是nginx安装完成无法解析php解决方法,感兴趣的同学赶快来看一看吧,对你有帮助的话记得收藏一下,方便下次浏览
    2021-12-12
  • Nginx服务器中配置非80端口的端口转发方法详解

    Nginx服务器中配置非80端口的端口转发方法详解

    这篇文章主要介绍了Nginx服务器中配置非80端口的端口转发方法详解,文中使用到了Nginx中的proxy_pass配置项,需要的朋友可以参考下
    2016-04-04
  • Centos 6.5 64位中Nginx详细安装部署教程

    Centos 6.5 64位中Nginx详细安装部署教程

    Nginx是一个web服务器也可以用来做负载均衡及反向代理使用,目前使用最多的就是负载均衡,具体简介我就不介绍了百度一下有很多,下面直接进入安装步骤,需要的朋友可以参考下
    2017-08-08
  • 使用Nginx进行URL转发的配置案例

    使用Nginx进行URL转发的配置案例

    Nginx是一个高性能的Web服务器和反向代理服务器,它还可以用于URL转发,在本教学文章中,我们将从安装Nginx开始,逐步介绍配置步骤,并展示一个URL转发的案例,感兴趣的朋友可以参考下
    2023-09-09
  • nginx lua集成kafka的实现方法

    nginx lua集成kafka的实现方法

    这篇文章主要介绍了nginx lua集成kafka的实现方法,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2019-08-08
  • Nginx多个前端服务配置方式详解

    Nginx多个前端服务配置方式详解

    这篇文章主要介绍了Nginx多个前端服务配置方式,主要包括多个location配置,多个server配置,配置方式本文给大家介绍的非常详细,感兴趣的朋友一起看看吧
    2022-03-03
  • Windows中将Nginx添加为服务的问题

    Windows中将Nginx添加为服务的问题

    这篇文章主要介绍了Windows中将Nginx添加为服务的问题,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-02-02
  • 如何使用Nginx和uwsgi在自己的服务器上部署python的flask项目

    如何使用Nginx和uwsgi在自己的服务器上部署python的flask项目

    Nginx 是一个高性能的 HTTP 和反向代理服务,其特点是占有内存少,并发能力强,事实上nginx的并发能力在同类型的网页服务器中表现较好,这篇文章主要介绍了如何使用Nginx和uwsgi在自己的服务器上部署python的flask项目,需要的朋友可以参考下
    2023-11-11
  • FastDFS安装和配置整合Nginx-1.13.3的方法

    FastDFS安装和配置整合Nginx-1.13.3的方法

    这篇文章主要介绍了FastDFS安装和配置整合Nginx-1.13.3的方法,需要的朋友可以参考下
    2017-08-08

最新评论