防盗链是很多下载类网站必须做的工作,各个网站会采取不同的策略来实现这一功能,各有优缺点。下面介绍一下Linux主机Nginx服务器下利用 accesskey模块实现Nginx服务器深度防盗链的方法。比起常用的通过判断referer的方法,其防盗链能力更加强劲,就算迅雷什么的也没有办法对付。



一、如何为nginx安装accesskey模块

首先下载Nginx-accesskey模块:http://wiki.nginx.org/p_w_picpaths/5/51/Nginx-accesskey-2.0.3.tar.gz 
    
#tar zxvj nginx-accesskey-2.0.3.tar.gz 
    
比如说这时候文件解压到/usr/src/nginx-accesskey-2.0.3 
    
修改其目录下的config文件 
    
#vi ./config 
    
将”$HTTP_ACCESSKEY_MODULE”替换成”ngx_http_accesskey_module”



杀死nginx进程

#kill `cat /usr/local/nginx/nginx.pid` 
    
来到nginx的源代码目录下面 /usr/src/nginx-0.7.54,重新编译nginx 
    
#cd /usr/src/nginx-0.7.54/ 
    
#./configure –add-module=/usr/src/nginx-accesskey-2.0.3 
    
(注意:其他nginx编译参数请按照自己的需要添加,这里省略未写) 
    
#make && make install


配置nginx.conf

#vi /usr/local/nginx/conf/nginx.conf 
    
在你需要设置防盗链的主机的下面加入以下内容,比如主机根目录下面download目录下面的文件都要防盗链,那么就加入: 
    
location /download 
    
{ 
    
accesskey on; 
    
accesskey_hashmethod md5; 
    
accesskey_arg “key”; 
    
accesskey_signature “password$remote_addr”; 
    
}


注意:这里accesskey_signature后面的password是干扰码,你可以改为自己需要的密码。



设置完毕,重启nginx

#ulimit -SHn 51200 
    
#/usr/local/nginx/sbin/nginx 
    
至此,accesskey模块安装完毕。


二、如何使用防盗链功能
按照以上的设置,download文件夹下所有的文章如果用地址直接引用,比如http://www.xinkexue.com/download/test.rar,都会提示403错误,无法访问到资源,这也就是我们说的防盗链功能已经生效。那么要如何才能让我们的目标用户下载这些文件呢?方法就是我们要给用户一个正确的链接,形如http://www.xinkexue.com/download … 3b5423523952352bg2g
这个key后面的参数是根据前面设定的accesskey_hashmethod和accesskey_signature确定的,比如我们前面的设定就是对password$remote_addr($remote_addr代表客户端传递过来的IP)的值进行MD5加密运算得到的结果。我们要把带有 key值的地址重新定向给目标用户,这样我们的目标用户才能下载到资源,没有key或者key值错误,都将被认为是盗链,而无法下载。



下面我们用PHP脚本的header重定向函数举例说明:

nginx 增加密码 nginx加密模块_python



Ctrl+Enter 发布