1.什么是防盗链?
盗链是一种损害原有网站合法利益,给原网站所在服务器造成额外负担的非法行为。要采取防盗链的措施,
首先需要了解盗链的实现原理。
客户端向服务器请求资源时,为了减少网络带宽,提高响应时间,服务器一般不会一次将所有资源完整地传
回给客户端。比如在请求一个网页时,首先会传回该网页的文本内容,当客户端浏览器在解析文本的过程中
发现有图片存在时,会再次向服务器发起对该图片资源的请求,服务器将存储的图片资源再发送给客户端。
在这个过程中,如果该服务器上只包含了网页的文本内容,并没有存储相关的图片资源,而是将图片资源链
接到其他站点的服务器上去了,这就形成了盗链行为。
比如内网用户通过Internet访问域名为www.test.com这个服务器上的WEB服务,而该服务器没有存储图片
资源,而是将图片链接到域名为www.fz.com服务器上,这就形成了盗链行为。这种情况下客户端请求图片
资源实际上是来自其他的服务器。

对于图片来说,A网站,如果想使用B网站的图片,可以直接写上B网站图片的链接地址,或者将B网站的图片
通过右键另存为的方式下载到本地,然后在页面上使用。如果B网站不想A网站这么干了,那么B网站可以采
取防盗链的措施来干这个工作,结果就是,A网站想请求所需要的资源,通过url的方式,获取的可能不是原
来的图片了,出现404或者别的图片替代了。如果通过浏览器直接打开图片url,那么仍然有可能显示404,
这就是防盗链。
2.为什么要实现防盗链?
非法访问并不会给网站带来利益或好处,相反,这会浪费网站的带宽,增加服务器的连接压力,比如有些网
站是按流量收费的,那么只要有人访问了盗用图片或其他文件的网站,网站就要支付这部分的流量费用。
3.怎样实现防盗?
3.1、准备知识
要实现防盗链,需要了解HTTP协议中的请求头部的Referer头域和采用URL的格式表示访问当前网页或者文
件的源地址。通过该头域的值,我们可以检测到访问目标资源的源地址。这样,如果我们检测到Referer头
域中 的值并不是自己站点内的URL,就采取组织措施,实现防盗链。
需要注意是,这种实现可以限制大多数普通的非法请求,但不能限制有目的的请求,因为这种方式可以通过
伪造referer信息来绕过,因此该方法不能完全阻止所有盗链行为。
使用ngx_http_accesskey_module模块或lua脚本实现
原理如