下载服务器上有众多的软件资源, 可是很多来源不是本站,是迅雷、flashget, 源源不断的带宽,防盗链绝对是当务之急. 使用来源判断根本不靠谱,只能防止一些小白站点的盗链,迅雷之类的下载工具完全无效,如果你是nginx的话,使用secure link完美解决这个问题,远离迅雷.本文仅用于下载服务器,不适用于图片防盗链.
默认情况下nginx不会安装secure_link模块,需要手动指定,配置参数如下
# ./configure --with-http_secure_link_module \ |
--prefix=/usr/local/nginx-1.4.2 --with-http_stub_status_module |
2. 配置nginx:
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; |
secure_link $arg_st,$arg_e; |
secure_link_md5 ttlsa.com$uri$arg_e; |
if ($secure_link = "0") { |
3. php下载页面
# 作用:生成nginx secure link链接 |
$secret = 'ttlsa.com'; # 密钥 |
$path = '/web/nginx-1.4.2.tar.gz'; # 下载文件 |
# 下载到期时间,time是当前时间,300表示300秒,也就是说从现在到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; |
4. 测试nginx防盗链
打开http://test.ttlsa.com/down.php点击上面的连接下载 下载地址如下:
http://s1.down.ttlsa.com/web/nginx-1.4.2.tar.gz?st=LSVzmZllg68AJaBmeK3E8Q&e=1378881984
页面不要刷新,等到5分钟后在下载一次,你会发现点击下载会跳转到403页面。
5. secure link 防盗链原理
- down.php根据secret密钥、过期时间、文件uri生成加密串
- nginx下载服务器接收到了过期时间,也使用过期时间、配置里密钥、文件uri生成加密串
- 将用户传进来的加密串与自己生成的加密串进行对比,一致允许下载,不一致403
整个过程实际上很简单,类似于用户密码验证. 尤为注意的一点是大家一定不要泄露了自己的密钥,否则别人就可以盗链了,除了泄露之外最好能经常更新密钥.
5. secure link 指令
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取代,不在多说.
6. 注意事项
- 下载服务器和php服务器的时间不能相差太大,否则容易出现文件一直都是过期状态.
7. 最后
secure link以及内置到了nginx,不需要额外安装第三方模块,有下载服务器的兄弟,我极力推荐你们使用它,除非你不在乎你的带宽.
文章标题: nginx secure_link下载防盗链
本文地址: http://www.ttlsa.com/nginx/nginx-modules-secure_link/
除非注明,博客文章均为"运维生存时间"原创,转载请标明本文地址,运维圈子期待您的加入(http://bbs.ttlsa.com),
- Nginx中防盗链(下载防盗链和图片防盗链)操作记录
日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...
- Nginx中防盗链(下载防盗链和图片防盗链)及图片访问地址操作记录
日常运维工作中,设置防盗链的需求会经常碰到,这也是优化网站的一个必要措施.今天在此介绍Nginx中设置下载防盗链和图片防盗链的操作~ 一.Nginx中下载防盗链的操作记录对于一些站点上的下载操作,有很 ...
- nginx如何设置防盗链
关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底的防盗链! 一般,我们做好防盗链之后其他网站盗链的本站图片就会全部失效无法显示,但是您如果通 ...
- 【转】nginx如何设置防盗链
转自博客园作者:howhy,文章地址:nginx如何设置防盗链.大佬写的甚好,在此备份一下 关于nginx防盗链的方法网上有很多教程,都可以用,但是我发现很多教程并不完整,所做的防盗链并不是真正的彻底 ...
- nginx服务器图片防盗链的方法
nginx服务器图片防盗链的方法<pre> location ~* \.(gif|jpg|png|jpeg)$ { expires 30d; valid_referers *.shuche ...
- 16.Nginx优化与防盗链
Nginx优化与防盗链 目录 Nginx优化与防盗链 隐藏版本号 修改用户与组 缓存时间 日志切割 小知识 连接超时 更改进程数 配置网页压缩 配置防盗链 配置防盗链 隐藏版本号 可以使用 Fiddl ...
- Nginx下载防盗链(迅雷等下载软件)
什么是下载盗链 假设我们是一个B站,有些视频资源是可以提供给用户下载的.这时迅雷等其他下载软件,也提供下载该视频的服务, 但是迅雷很不厚道的,将我们的下载资源提供给他的用户,下载.占用我们的带宽来 ...
- 防盗链Nginx设置图片防盗链,设置无效的请仔细看红字
*******************************************************************切记,替换的图片地址要使用没有防盗链的网站图片,否则由于替换的图片 ...
- nginx配置图片防盗链
location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)${ expires 30d; access_log off; valid_referers none blocked ...
随机推荐
- Autofac 同时支持MVC 与Webapi
1.引用 using Autofac; using Autofac.Integration.Mvc; using Autofac.Integration.WebApi; 2.在Global中的Appl ...
- tableView优化性能
在iOS应用中,UITableView应该是使用率最高的视图之一了.iPod.时钟.日历.备忘录.Mail.天气.照片.电话.短信. Safari.App Store.iTunes.Game Cent ...
- DOm4解析xml
1.创建XML文档对象的的方式有两种 1)Document document=DocumentHelper.createDocument(); 2)DocumentFactory documentFa ...
- 【P1825】表达式整除
又自己写出来了好开心OvO 原题: 24点这个游戏好多人都玩过,就是给你4个数,添加相应的运算符,是否可以得到结果是24.小x在玩了很多遍这个游戏之后,想把这个游戏给改变一下.给你n个整数,在n个整数 ...
- Ext.Net 学习随笔 002 默认按钮
在FormPanel中按回车按键,会触发默认按钮的click事件.设置方法为在FormPanel中设置DefaultButton属性,如果没有设置这个属性,默认为最后一个按钮. 1.缺省最后一个按钮为 ...
- java如何在eclipse编译时自动生成代码
用eclipse写java代码,自动编译时,如何能够触发一个动作,这个动作是生成本项目的代码,并且编译完成后,自动生成的代码也编译好了, java编辑器中就可以做到对新生成的代码的自动提示? 不生成代 ...
- PowerBuilder 简介及应用 - 数据库系统原理
PowerBuilder 是一种企业级数据库前端应用和多层体系结构开发工具,友好的用户界面,功能强大的数据窗口,是一个集成开发环境. PB 的特点 采用面向对象的编程方法和事件驱动的工作原理. 支持跨 ...
- openacs与easycwmp的对接
原创作品,转载请注明出处 copyright:weishusheng 2015.3.18 email:642613208@qq.com 平台: Linux version 2.6.32-279.e ...
- Window.Open详解
文章来源:http://www.cnblogs.com/stswordman/archive/2006/06/02/415853.html 一.window.open()支持环境:JavaScript ...
- 转:linux lsof命令详解
简介 lsof(list open files)是一个列出当前系统打开文件的工具.在linux环境下,任何事物都以文件的形式存在,通过文件不仅仅可以访问常规数据,还可以访问网络连接和硬件.所以如传输控 ...