防盗链是很多下载类网站必须做的工作,各个网站会采取不同的策略来实现这一功能,各有优缺点。下面介绍一下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重定向函数举例说明:
  • 收藏
  • 评论
  • 举报
提问和评论都可以,用心的回复会被更多人看到 评论
发布评论
相关文章