## 编辑配置文件

[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是反义词

Nginx配置——防盗链_配置防盗链

## 检查并重新加载

[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,就是可以访问的