大佬教程收集整理的这篇文章主要介绍了防盗链(二)nginx secure_link下载防盗链,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
下载服务器上有众多的软件资源, 可是很多来源不是本站,是迅雷、flashget, 源源不断的带宽,防盗链绝对是当务之急. 使用来源判断根本不靠谱,只能防止一些小白站点的盗链,迅雷之类的下载工具完全无效,如果你是nginx的话,使用secure link完美解决这个问题,远离迅雷.本文仅用于下载服务器,不适用于图片防盗链.
默认情况下Nginx不会安装secure_link模块,需要手动指定,配置参数如下
1 2 3 4 | # ./configure --with-http_secure_link_module \ --prefix=/usr/local/Nginx-1.4.2 --with-http_stub_status_module # make # make install |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 | server { listen 80; server_name s1.down.ttlsa.com; access_log /data/logs/Nginx/s1.down.ttlsa.com.access.log main; index index.html index.PHP index.html; root /data/site/s1.down.ttlsa.com; location / { secure_link $arg_st,$arg_e; secure_link_md5 ttlsa.com$uri$arg_e; if ($secure_link = "") { return 403; } if ($secure_link = "0") { return 403; } } } |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 | <?PHP # 作用:生成Nginx secure link链接 # 站点:www.ttlsa.com # 作者:凉白开 # 时间:2013-09-11 $secret = 'ttlsa.com'; # 密钥 $path = '/web/Nginx-1.4.2.tar.gz'; # 下载文件 # 下载到期时间,time是当前时间,300表示300秒,也就是说从现在到300秒之内文件不过期 $expire = time()+300; # 用文件路径、密钥、过期时间生成加密串 $md5 = base64_encode(md5($secret . $path . $expire, true)); $md5 = strtr($md5, '+/', '-_'); $md5 = str_replace('=', '', $md5); # 加密后的下载地址 echo '<a href=http://s1.down.ttlsa.com/web/Nginx-1.4.2.tar.gz?st='.$md5.'&e='.$expire.'>Nginx-1.4.2</a>'; echo '<br>http://s1.down.ttlsa.com/web/Nginx-1.4.2.tar.gz?st='.$md5.'&e='.$expire; ?> |
打开http://test.ttlsa.com/down.PHP点击上面的连接下载
下载地址如下:
http://s1.down.ttlsa.com/web/Nginx-1.4.2.tar.gz?st=LSVzmZllg68AJaBmeK3E8Q&e=1378881984
页面不要刷新,等到5分钟后在下载一次,你会发现点击下载会跳转到403页面。
整个过程实际上很简单,类似于用户密码验证. 尤为注意的一点是大家一定不要泄露了自己的密钥,否则别人就可以盗链了,除了泄露之外最好能经常更新密钥.
secure_link
语法: secure_link md5_hash[,expiration_time]
默认: none
配置段: location
variables: yes
这个指令由uri中的MD5哈希值和过期时间组成. md5哈希必须由base64加密的,过期时间为unix时间.如果不加过期时间,那么这个连接永远都不会过期.
secure_link_md5
语法: secure_link_md5 secret_token_concatenated_with_protected_uri
默认: none
配置段: location
variables: yes
md5值对比结果,使用上面提供的uri、密钥、过期时间生成md5哈希值.如果它生成的md5哈希值与用户提交过来的哈希值一致,那么这个变量的值为1,否则为0
secure_link_secret
语法: secure_link_secret word
默认:
配置段: location
Reference: secure_link_secret
Nginx 0.8.50之后的版本已经使用secure_link_md5取代,不在多说.
secure link以及内置到了Nginx,不需要额外安装第三方模块,有下载服务器的兄弟,我极力推荐你们使用它,除非你不在乎你的带宽.
以上是大佬教程为你收集整理的防盗链(二)nginx secure_link下载防盗链全部内容,希望文章能够帮你解决防盗链(二)nginx secure_link下载防盗链所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。