Nginx利用Secure Link进行文件下载防盗链
目的简介:
现在越来越多的博客,资源站因为各种因素,都开始纷纷搭建属于自己的下载服务器,但是这就造成了一个问题,盗链现象越来越严重。那么我们今天就来说说如何实现利用Nginx底层实现防盗链。
实战方法:
1.首先,需要Nginx编译的时候支持 secure link 这个就不多说了。(以下为宝塔 的编译方法)
宝塔在默认编译nginx后,会保留源码,及必要的模块源码(如ngx_cache_purge),所以编译时无需再次下载
默认安装脚本:/www/server/panel/install/nginx.shnginx
源码目录:/www/server/nginx/src/
cd /www/server/nginx/src/
./configure --user=www --group=www --prefix=/www/server/nginx --with-openssl=/www/server/nginx/src/openssl --add-module=/www/server/nginx/src/ngx_devel_kit --add-module=/www/server/nginx/src/lua_nginx_module --add-module=/www/server/nginx/src/ngx_cache_purge --with-http_stub_status_module --with-http_ssl_module --with-http_v2_module --with-http_gzip_static_module --with-http_gunzip_module --with-stream --with-stream_ssl_module --with-http_sub_module --with-http_flv_module --with-http_addition_module --with-http_realip_module --with-http_mp4_module --with-ld-opt="-Wl,-E" --with-http_secure_link_module
make
rm -f /www/server/nginx/sbin/nginx.old
mv /www/server/nginx/sbin/nginx /www/server/nginx/sbin/nginx.old
cp objs/nginx /www/server/nginx/sbin/nginx
make upgrade
upgrade 完毕后,使用 nginx -V 命令 再次查看版本信息。
2.在下载服务器的Nginx配置文件中,最后放上,如下代码:
#防盗链
location / {
#limit_conn addr 1;
#limit_conn perip 1;
#limit_conn perserver 100;
secure_link $arg_st,$arg_e;
secure_link_md5 这是随机字符替换$uri$arg_e;
if ($secure_link = "") {
return 403;
}
if ($secure_link = "0") {
return 403;
}
}
access_log /www/wwwlogs/xz.cn.down.qkeke.com.log;
error_log /www/wwwlogs/xz.cn.down.qkeke.com.error.log;
3.在下载服务器根目录放上文件:
<?php
$host='test.qkeke.com';
$secret = '这是随机字符替换'; # 密钥
$path = $_GET['file']; # 下载文件
if(empty($path))
{
echo '非法请求!';
exit();
}
# 下载到期时间,time是当前时间,300表示300秒,也就是说从现在到300秒之内文件不过期
$expire = time()+300;
# 用文件路径、密钥、过期时间生成加密串
$md5 = base64_encode(md5($secret .'/'.$path . $expire, true));
$md5 = strtr($md5, '+/', '-_');
$md5 = str_replace('=', '', $md5);
# 加密后的下载地址
$link='https://'.$host.'/'.$path.'?st='.$md5.'&e='.$expire;
echo '<a href='.$link.'>test</a>';
echo '<br/>'.$link;
header("Refresh:3;url=".$link);
?>
版权声明:
作者:三炮不吃鱼
链接:https://www.keke.moe/archives/108.html
文章版权归作者所有,未经允许请勿转载。
THE END