码迷,mamicode.com
首页 > 其他好文 > 详细

完美的nginx图片防盗链设置详解

时间:2016-08-08 12:32:00      阅读:165      评论:0      收藏:0      [点我收藏+]

标签:

 

一般,我们做好防盗链之后其他网站盗链的本站图片就会全部失效无法显示,但是您如果通过浏览器直接输入图片地址,仍然会显示图片,仍然可以右键图片另存为下载文件!依然可以下载?这样就不是彻底的防盗链了!

 1 [root@web01 vhosts]# cat default.conf
 2 server {
 3     listen 80 default_server;
 4     server_name 192.168.1.24 web01.espressos.cn;
 5     root /app/www;
 6     index index.php index.html index.htm;
 7     location ~* \.(gif|jpg|png|swf|flv)$ {
 8     valid_referers none blocked *.espressos.cn;
 9     if ($invalid_referer) {
10         rewrite ^/ http://192.168.1.25/404.jpg;
11         #return 404;
12         }
13     }
14     location ~ .*\.(php|php5)?$
15     {
16        #fastcgi_pass  unix:/tmp/php-cgi.sock;
17         fastcgi_pass  127.0.0.1:9000;
18     fastcgi_index index.php;
19     include fastcgi.conf;
20     }
21     access_log  /app/log/nginx/access/default.log;
22 }

注意第8行 “valid_referers none blocked" 其中"none" "blocked" 的意思分别是:

none代表没有referer;blocded代表有referer但是被防火墙或者是代理给去除了。

首先当我输入我要打开的网址的时候,因为是直接输入的没有referer所以匹配了
valid_referers后面的none或者是blocked 所以invalid_referer值为0 所以不进行跳转.
当我是从这个网站里面的链接跳到该网站首页的时候 因为referer的值是肯定包含srever_names 所以匹配了server_names所以不进行跳转。
当我从搜素引擎进去的时候因为referer字段类似于www.google.com.hk/search
开始进行匹配 发现没有一个匹配,则此时会设置invalid_referer值为1 if语句成功执行,进行了跳转. 达到功能

如果把这两个(none,blocked)去掉就可以真正的实现防盗连了!因为只有匹配到server_name的时候,才不会进行跳转。如下面实例:

技术分享

[root@web01 www]# cat index.html 
<html>
<body>
<h1>hello world bass!! </h1>
<img alt="bass.png" src="/bass.png" height="auto" width="auto"></img>
</body>
</html>

接真输入图片地址可以显示图片:

技术分享

 1 [root@web01 www]# cat /app/server/nginx/conf/vhosts/default.conf
 2 server {
 3     listen 80 default_server;
 4     server_name 192.168.1.24 web01.espressos.cn;
 5     root /app/www;
 6     index index.php index.html index.htm;
 7     location ~* \.(gif|jpg|png|swf|flv)$ {
 8     valid_referers *.espressos.cn;
 9     if ($invalid_referer) {
10         rewrite ^/ http://192.168.1.25/404.jpg;
11         #return 404;
12         }
13     }
14     location ~ .*\.(php|php5)?$
15     {
16        #fastcgi_pass  unix:/tmp/php-cgi.sock;
17         fastcgi_pass  127.0.0.1:9000;
18     fastcgi_index index.php;
19     include fastcgi.conf;
20     }
21     access_log  /app/log/nginx/access/default.log;
22 }

注意第8号:8 valid_referers *.espressos.cn;去掉了none,blocked:(效果如下)

技术分享

当再次输入web01.espressos.cn/bass.png时发生跳转到192.168.1.25/404.jpg:

技术分享

这才实现了完美的防盗链!!

完美的nginx图片防盗链设置详解

标签:

原文地址:http://www.cnblogs.com/bass6/p/5748694.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!