Nginx使用http_accesskey_module防盗链,告别referer,告别伪装

Nginx使用http_accesskey_module防盗链,告别referer,告别伪装

传统的防盗链很多是依赖referer,比如apache的rewrite模块,根据规则判断referer,这个方法是可以伪装的,对现在的下载工具没有丝毫效果了。

我们就来说说http_accesskey_module模块的原理,他通过接受到的参数值判断访问是否合法。这里有一套MD5加密算法。前台的网页根据用户的IP产生一个MD5值,后端的WEB SERVER就来判断这个MD5,对的就放行。不对就拒绝。浏览器上直接访问物理文件,是不能打开的。

现在就开始操作:

下载nginx

http://sysoev.ru/nginx/nginx-0.6.35.tar.gz
补丁文件:http://www.ieesee.net:8080/~uingei/nginx-accesskey-2.0.3.diff.bz2
tar -xzvf nginx-0.6.35.tar.gz
cd nginx-0.6.35
bzcat ../nginx-accesskey-2.0.3.diff.bz2 | patch -p1
./configure –with-http_accesskey_module ……
make
make install

如果中途出现:

unused variable `clcf'

报错信息,我是这么解决的,将src/http/modules/ngx_http_accesskey_module.c 的ngx_http_core_loc_conf_t 删除,重新编译。

编译成功后,在主配置文件加入类似下面的代码:

server{ 
.....
location /download {
accesskey on;
accesskey_hashmethod md5;
accesskey_arg "key";
accesskey_signature "mypass$remote_addr";
}
}

/download 为你下载的目录。

前台php产生的下载路径格式是:

http://*****.com/download/1.zip?key=<?php echo md5('mypass'.$_SERVER["REMOTE_ADDR"]);?>

这样,当访问没有跟参数时,其他用户打开时,就出现:

nginx,http_accesskey_module

基于客户端IP产生的MD5值,换了IP后就打不开了。这样的方法在nginx只做均衡调度工作时,不起作用的。会提示404错误。

 

转:http://xok.la/2009/03/nginx_http_accesskey_module_referer.html

posted @ 2011-11-14 23:33  shuaixf  阅读(2169)  评论(0编辑  收藏  举报