容器技术交流

 找回密码
 立即注册
查看: 10241|回复: 5

用accesskey模块实现Nginx服务器深度防盗链

[复制链接]
发表于 2012-2-18 21:49:15 | 显示全部楼层 |阅读模式
防盗链是很多下载类网站必须做的工作,各个网站会采取不同的策略来实现这一功能,各有优缺点。下面介绍一下Linux主机Nginx服务器下利用 accesskey模块实现Nginx服务器深度防盗链的方法。比起常用的通过判断referer的方法,其防盗链能力更加强劲,就算迅雷什么的也没有办法对付。
一、如何为nginx安装accesskey模块
首先下载Nginx-accesskey模块:http://wiki.nginx.org/images/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重定向函数举例说明:
//其他代码省略
//header函数实现重定向
header(”location:http://www.xinkexue.com/download/test.rar?key=”.md5(”password”.$_SERVER['REMOTE_ADDR']));
这样用户就能顺利访问到含有正确key值的资源了。
最后提一句,要实现真正的深度防盗链,需要有冗余备份防盗链措施辅助,比如你可以即使用传统的判断referer的防盗链,再结合accesskey模块,那么大约能够保证万无一失了,阿弥陀佛:)

评分

1

查看全部评分

发表于 2012-2-19 01:50:35 | 显示全部楼层
沙发下。很好的东西
发表于 2012-2-19 11:26:24 | 显示全部楼层
确实是好东西
草莓影视www.caomeiys.com
看电影就来草莓影视
发表于 2012-4-6 10:38:08 | 显示全部楼层
来到nginx的源代码目录下面 /usr/src/nginx-0.7.54


请问为什么我找不到这目录呢?。
 楼主| 发表于 2012-4-6 12:43:29 | 显示全部楼层
版本不一样,注意看你的版本!
发表于 2013-5-19 22:02:36 | 显示全部楼层
本帖最后由 蛋蛋 于 2013-5-19 23:12 编辑

测试!测试!
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|Archiver|URLOS ( 粤ICP备18087780号 )

GMT+8, 2025-5-11 10:58 , Processed in 0.032246 second(s), 22 queries .

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表