Nginx——防盗链的配置

防盗链

盗链是指有一些不良网站,为了在不增加成本的前提下扩充自己站点的内容,直接盗用其他网站的资源链接,而大部分用户又不会发现。这样的做法一方面损害了原网站的合法利益,另一方面又加重了原网站服务器的流量负担

图片防盗链

图片是一个网站中最容易被盗取的资源,如何使用Nginx来保护图片不被盗链呢?在讲解之前,首先要了解HTTP请求消息中的一个名称为referer的字段,它用于保存当前网页的来源URL地址。当用户打开一个含有图片内容的网页时,浏览器会在图片的请求消息中将网页的URL放在referer中,从而使图片所在的服务器能够跟踪到它被显示的网页地址。

因此,若要实现图片防盗链,最简单的防护手段就是判断referer的值,来判断当前图片的引用是否合法,一旦检测到来源不是本站,就立即阻止图片的发送,或换成一张禁止防盜链提示的图片。

1. 准备两个网站:

在nginx. conf文件中,配置两个虚拟主机www. ng. test和www. test. com,用于在网站www. test. com中盗用网站www. ng. test中的图片链接,配置如下:

server {
	listen 80;
	server_name www.ng.test;
	root html/ng.test;
	index index.html index.htm;
}
server {
	listen 80;
	server_name www.test.com;
	root html/test.com;
	index index.html index.htm;
}

接下来,在网站www. ng. test的目录html/ng. test中创建img子目录,用于存放网页中的图片资源。然后,分别在网站www.ng.test和www.test.com中创建测试网页,具体如下。

(1) 在网站www. ng. test下,创建index. html文件,用于展示自己网站中的图片,内容如下:

在这里插入图片描述

(2) 在网站www.test.com中盗用网站www.ng.test中的图片链接,index.html的内容如下:
在这里插入图片描述

准备完成后,在浏览器中分别访问网站http://www.ng.test
在这里插入图片描述

http://www.test.com
在这里插入图片描述

从图中可以看出www. test. com网站从www. ng. test中盗链成功。

2. 配置防盗链:

接着,修改网站 www.ng.test的 server 配置,添加允许文件链出的域名白名单,具体设置如下:

location ~*\.(gif|jpg|png|swf|flv)$ {
	valid_referers www.ng.test ng.test;
	if ($invalid_referer) {
		return 403;
	}
}

上述第1行配置,用于匹配文件扩展名为gif、jpg、png、swf、flv的资源;第2行中的valid_referers 指令用于设置允许访问资源的网站列表(即白名单)。当请求消息头中的referer符合白名单时,内置变量$invalid_referer的值为空字符串,否则为1。因此,通过第3~5行的配置,可以禁止白名单之外的网站访问资源,并返回403状态码。

白科值得一提的是,valid_referers 指令的参数可以叠加设置,中间使用空格分隔即可。关于valid_referers指令后可以设置的参数值以及相关说明如表:
在这里插入图片描述

3. 验证测试:

访问:www.ng.test
在这里插入图片描述

访问:www.test.com
在这里插入图片描述

需要注意的是,不是所有的浏览器都会发送referer 请求头,并且referer的值还可以被客户端随意修改。也就是说,referer是可以被伪造的。因此,上述讲解的方式只能用于防范普通用户对图片资源的盗用。

  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值