防盗链的教程网上不少,我这里也是收藏一下代自己以后用,就不详细说了,本文的方法主要有两种情况,利用Nginx自带的模块和第三方模块ngx_http_accesskey_module,相对于前者来说后者的效果更强,深度防盗比较不错。

一:一般的防盗链如下:

location ~* \.(gif|jpg|png|swf|flv)$
{
 valid_referers none blocked www.vcoo.me vcoo.me;
 if ($invalid_referer)
 {
  rewrite ^/ http://www.vcoo.me/404.html;
  #return 403;
 }
}

第一行:gif|jpg|png|swf|flv
表示对gif、jpg、png、swf、flv后缀的文件实行防盗链
第二行: 表示对www.vcoo.me这2个来路进行判断
if{}里面内容的意思是,如果来路不是指定来路就跳转到指定页面,当然直接返回403也是可以的。
 
二:针对图片目录防止盗链:

location /images/
{
 alias /data/images/;
 valid_referers none blocked server_names *.vcoo.me vcoo.me;
 if ($invalid_referer) {return 403;}
}

三:使用第三方模块ngx_http_accesskey_module实现Nginx防盗链

下载Accesskey 源码包 点击这里下载.
 
然后再ssh里把accesskey的源码解压 例如所有文件被解压在/home/accesskey/ 下.
 
然后解压nginx源码 在常规./configure 的参数后 添加上 –add-module=/home/accesskey 就可以了

微酷这里用到的编译Nginx的命令:

./configure –prefix=/usr/local/nginx –user=www –group=www –add-module=/home/accesskey –with-http_ssl_module –with-http_flv_module –with-http_stub_status_module –with-http_dav_module –with-http_secure_link_module

编译之后make,之后在nginx/objs目录下的nginx文件覆盖/usr/local/nginx/sbin下文件(记得备份旧文件),重启Nginx
 
然后就是配置nginx了 这里贴上独立的一段.

        accesskey             on;
        accesskey_hashmethod  md5;
        accesskey_arg         "参数";
        accesskey_signature   "密码$remote_addr";

把上面的参数改成你喜欢的 比如k密码改成比如123之类的. 单独保存为一个文件 比如acc.conf;

然后在需要的location下include这个conf文件即可 例如

location /picture
{
include acc.conf;
}

如此这般设置要以后 还需要在php代码里算出这个k的值:

<!–?php
$ipkey= md5("配置文件里的密码".$_SERVER[‘REMOTE_ADDR’]);
?–>
<img src="/picture/t.jpg?k=&lt;?php echo $ipkey; ?&gt;" alt="" />
 

目前有1 条留言

  1. 2011年06月21日 15:26 MeeSii   |  引用  |  #1     

    我当时好像用的是那个什么规则的,忘记了。。。

    那个也好用。盗用图片会显示另一张图片的、

    ifu25 于 2011-6-21 22:31:18 回复

    判断来路。

发表评论

/ 快捷键:Ctrl+Enter
加载中……