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

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

以上是小编为您精心准备的的内容,在的博客、问答、公众号、人物、课程等栏目也有的相关内容,欢迎继续使用右上角搜索按钮进行搜索404
, nginx
, 配置
nginx配置
nginx 404、nginx 404 配置、nginx php 404、thinkphp nginx 404、nginx 404 跳转,以便于您获取更多的相关知识。

时间: 2024-10-27 04:58:07

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

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

nginx可以很方便的配置成反向代理服务器: server { listen 80; server_name localhost; location / { proxy_pass http://x.x.x.x:9500; proxy_set_header Host $host:80; proxy_set_header X-Real-IP $remote_addr; proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for; proxy

nginx/0.8.6 配置404错误页面

nginx/0.8.6 配置404错误页面 nginx/0.8.6   为什么要自定义404页面 在访问时遇到上面这样的404错误页面,我想99%(未经调查,估计数据)的用户会把页面关掉,用户就这样悄悄的流失了.如果此时能有一个漂亮的页面能够引导用户去他想去的地方必然可以留住用户.因此,每一个网站都应该自定义自己的404页面. NGINX下如何自定义404页面 IIS和APACHE下自定义404页面的经验介绍文章已经非常多了,NGINX的目前还比较少,凑巧我的几台服务器都是NGINX的,为了解决

IIS服务器中设置404错误提示页面(iis6/iis8)

在IIS6中设置404错误页       在IIS8中设置404错误页 IIS版本:IIS 8.5 问题描述 搭建一个测试网站,总共就2个页面(index.php和404.php),默认首页为:index.php 当访问index.php和404.php的时候,IIS服务器能正常响应,说明在IIS 8.5中配置PHP环境没有出现问题. 访问index.php 访问404.php   另外,我的错误页配置结果如下: 正常情况下,当访问某个不存在的页面时(比如:127.0.0.1/aaa.php),

Linux/IIS服务器设置自定义404错误页面

一.Linux虚拟主机设置自定义404错误页面 设置一个好的自定义错误页面,可以增加网站的收录,挽留住一些可能因打不开的页面而放弃的客户,我司虚拟主机Windows提供了自定义错误页面设置,包括404错误页面在内的所有自定义错误都可以设置.Linux下设置需要手工操作也很简单. Linux下设置404方式是通过.htaccess文件,此文件位于网站根目录,如果您的空间没有,请先手工新建一个上传到根目录,接下来编辑此文件,加入下面这一行代码 ErrorDocument 404 /404.html

详解Nginx服务器中配置超时时间的方法_nginx

一.啥时候用到        用来设置请求资源和服务器返回的时间,保证一个请求占用固定时间,超出后报504超时!这样可以保证一个请求占用过长时间. 二.主要参数       使用nginx服务器如果遇到timeou情况时可以如下设置参数,使用fastcgi:          fastcgi_connect_timeout 75;  链接          fastcgi_read_timeout 600;   读取          fastcgi_send_timeout 600;   发请

在Nginx服务器中配置针对TCP的负载均衡的方法_nginx

 默认nginx不支持tcp的负载均衡,需要打补丁,(连接方式:从客户端收到一个连接,将从本地新建一个连接发起到后端服务器),具体配置如下: 一.安装Nginx1.下载nginx # wget http://nginx.org/download/nginx-1.2.4.tar.gz 2.下载tcp模块补丁 # wget https://github.com/yaoweibin/nginx_tcp_proxy_module/tarball/master 源码主页: https://github.c

详解Nginx服务器中配置Sysguard模块预防高负载的方案_nginx

nginx做为HTTP服务器,有以下几项基本特性: 处理静态文件,索引文件以及自动索引:打开文件描述符缓冲. 无缓存的反向代理加速,简单的负载均衡和容错. FastCGI,简单的负载均衡和容错. 模块化的结构.包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter.如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待. Nginx专为性能优化而开发,性能是其最重要的考量,实

详解Nginx服务器中配置全站HTTPS安全连接的方法_nginx

HTTPS就等于HTTP加上TLS(SSL),HTTPS协议的目标主要有三个:     数据保密性.保证内容在传输过程中不会被第三方查看到.就像快递员传递包裹时都进行了封装,别人无法知道里面装了什么东西.     数据完整性.及时发现被第三方篡改的传输内容.就像快递员虽然不知道包裹里装了什么东西,但他有可能中途掉包,数据完整性就是指如果被掉包,我们能轻松发现并拒收.     身份校验.保证数据到达用户期望的目的地.就像我们邮寄包裹时,虽然是一个封装好的未掉包的包裹,但必须确定这个包裹不会送错地方

Laravel中自定义404错误页面实现方法

404页面是一个网站必不可少的一个页面,当用尝试访问网站中不存在的资源时,就需要给用一个友好的提示.所以本文主要给大家做一个Laravel的404错误的列子.方法依旧简单明了. 只要在resources/views/errors目录下新建404.blade.php就可以啦! 里面就是404的内容,可以友好的支持blade的模板继承,下面是我的例子: @extends('layouts.home')   @section('content')  <div class="container&q