## 编辑配置文件
[root@wy ~]# vim /usr/local/nginx/conf/vhosts/test.conf
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf|flv|rar|zip|doc|pdf|gz|bz2|jpeg|bmp|xls)$ {
access_log off;
expires 15d;
#防盗链
valid_referers none blocked server_names *.test.com *.aaa.com *.bbb.com;
if ($invalid_referer) {
return 403;
#rewrite .* http://www.example.com/nophoto.gif; //也可以跳转到一个图片
}
}
解释说明:
因为之前配置了静态文件缓存,expires 15d与access_log off匹配条件重复,所以与此功能合并;
valid(相当于指定白名单)与invalid是反义词
## 检查并重新加载
[root@wy ~]# /usr/local/nginx/sbin/nginx -t
[root@wy ~]# /usr/local/nginx/sbin/nginx -s reload
## 测试
[root@wy ~]# curl -e "http://www.baidu.com/sfskl" -x127.0.0.1:80 http://www.test.com/static/p_w_picpath/smiley/default/kiss.gif -I
HTTP/1.1 403 Forbidden
Server: nginx/1.6.2
Date: Thu, 10 Nov 2016 23:38:04 GMT
Content-Type: text/html
Content-Length: 168
Connection: keep-alive
解释说明:
curl -e 可以指定你的referer,在这是伪造的,我们是为了做此实验,看百度的能不能用我的图片;
403,说明它盗链了。
[root@wy ~]# curl -x127.0.0.1:80 http://www.test.com/static/p_w_picpath/smiley/default/kiss.gif -I HTTP/1.1 200 OK
解释说明:
把-e 选项去掉,正常的,我们是可以访问的
[root@wy ~]# curl -e "http://www.test.com" -x127.0.0.1:80 http://www.test.com/static/p_w_picpath/smiley/default/kiss.gif -I
HTTP/1.1 200 OK
[root@wy ~]# curl -e "http://www.aaa.com" -x127.0.0.1:80 http://www.test.com/static/p_w_picpath/smiley/default/kiss.gif -I
HTTP/1.1 200 OK
解释说明:
使用了我们自己的网站作为referer,就是可以访问的