配置防盗链,我们就必须先理解盗链的实现原理,在HTTP协议中,有一个表头字段叫referer,采用URL的格式来表示从哪儿链接到当前的网页或文件。换句话说,通过referer,网站可以检测目标网页访问的来源网页,如果是资源文件,则可以跟踪到显示它的网页地址。有了referer跟踪来源就好办了,这时就可以通过技术手段来进行处理,一旦检测到来源不是本站即进行阻止或者返回指定的页面。 

  在apache虚拟主机配置文件加入以下代码:

vim /usr/local/apache2/conf/extra/httpd-vhosts.conf


SetEnvIfNoCaseReferer ".*\.1\.com" local_ref

SetEnvIfNoCaseReferer ".*\.a\.com" local_ref

SetEnvIfNoCaseReferer ".*\.b\.com" local_ref

SetEnvIfNoCaseReferer "^$" local_ref

<filesmatch"\.(txt|doc|mp3|zip|rar|jpg|gif)">

OrderAllow,Deny

Allowfrom env=local_ref

</filesmatch>

 

 

检测:使用curl -e来看referer是否生效

# curl -uaming:123456 -e "http://www.baidu.com/asdasdas/asdasd.php"-x127.0.0.1:80 www.1.com/1.txt -I

HTTP/1.1 403 Forbidden

Date:Tue, 09 Jun 2015 14:15:17 GMT

Server:Apache/2.4.12 (Unix) PHP/5.5.5

Content-Type:text/html; charset=iso-8859-1

 

[root@linux-lampapache2]# curl -u aming:123456 -e "http://www.a.com/aaa" -x127.0.0.1:80www.1.com/1.txt -I

HTTP/1.1 200 OK

Date:Tue, 09 Jun 2015 14:15:47 GMT

Server:Apache/2.4.12 (Unix) PHP/5.5.5

Last-Modified:Tue, 09 Jun 2015 13:49:38 GMT

ETag:"b-51816078dfa72"

Accept-Ranges:bytes

Content-Length:11

Cache-Control:max-age=0

Expires:Tue, 09 Jun 2015 14:15:47 GMT

Content-Type:text/plain

referer引用页是referer所指定的地址之外都会被排除.