博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
完美的nginx图片防盗链设置详解
阅读量:6328 次
发布时间:2019-06-22

本文共 2332 字,大约阅读时间需要 7 分钟。

 

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

1 [root@web01 vhosts]# cat default.conf 2 server { 3     listen 80 default_server; 4     server_name 192.168.1.24 web01.espressos.cn *.qq.com *.baidu.com; 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 

hello world bass!!

bass.png

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

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 *.qq.com *.baidu.com; 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:

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

请确保server段中只有一个location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$,否则可能导致代码无效,如有这个代码段请合并或删除。    切记:如果要跳转到图片,记得替换的图片地址要使用没有防盗链的网站图片,否则由于替换的图片其实也处于防盗链情况下,会造成仍旧无法显示设置的图片。

 

转载地址:http://xggaa.baihongyu.com/

你可能感兴趣的文章
Sortable – 简单灵活的 JavaScript 拖放排序插件
查看>>
[转]SSIS中OLE DB Source中如何执行Store Procedure 以得到源数据
查看>>
Laravel资料
查看>>
BeanUtils使用
查看>>
Unable to locate secure storage module异常的解决方案
查看>>
大型网站架构 借鉴(1)
查看>>
AsyncHttpClient的连接池使用逻辑
查看>>
C++函数模板
查看>>
Centos安装Memcache
查看>>
使用srvany.exe将程序安装成windows服务的详细教程
查看>>
Sftp和ftp 差别、工作原理等(汇总ing)
查看>>
Linux 常用命令大全
查看>>
经常使用算法之动态规划法
查看>>
OpenStack Dashboard
查看>>
浏览器兼容性问题解决方式
查看>>
2016年1月15日面试某互联网公司总结(转)
查看>>
osc搜索引擎框架search-framework,TngouDB,gso,
查看>>
Ajax无刷新提交表单和显示
查看>>
CSS透明度设置支持IE,Chrome,Firefox浏览器
查看>>
Android之——短信的备份与还原
查看>>