• nginx下的文件下载防盗链(HttpAccessKeyModule)


    本着节约带宽、权限下载的原则,寻觅下载防盗链技术。

    一、“referers”方式检测来路

    location ~* .(gif|jpg|png|swf|flv)$
    {
    valid_referers none blocked *.eact.com.cn;
    if ($invalid_referer)
    {
    return 403;
    }
    }

    仅适用于图片防盗链。现在的大部分下载软件都可以模拟构建来路,其他网站的盗链仍然无法避免。

     

    二、php-mysql-odbc-ftp方式

    让serv-u的ini配置文件通过odbc与数据库连接,php程序分配临时口令-ftp服务器通过数据库验证下载权限,提供ftp下载服务。

    1、优点:

    可以有效控制有效期、线程限制、速度限制。基本能够满足需求。本站曾经采取过此方式提供下载

    2、缺点

    依赖ftp服务器、数据库和他们的通信,频繁操作数据库,易引起故障。

    三、php流式输出

    由php读取文件,通过验证后使用web server 支持的 sendfile 方式进行流式输出。

    1、优点

    能够有效控制有效期、权限和速度,很多网站论坛、开源社区都采用此方式。

    2、缺点

    不能支持断点续传;服务器php模块处理带来一定的硬件消耗;当文件服务器为纯静态时时维护很麻烦。

    四、使用web server 防盗链模块

    使用nginx的第三方模块Http-Access-Key

    这个模块可以阻止所有URL中未包含合法访问令牌的访问(防盗链)。访问令牌可以由访问者IP或者其它服务器变量生成,所以可以很好地控制客户端的下载行为。

    用户得到的下载地址可能像这样: http://example.com/download/file.zip?key=09093abeac094

    1、下载、解压

    wget http://wiki.nginx.org/File:Nginx-accesskey-2.0.3.tar.gz
    
    tar zxvf Nginx-accesskey-2.0.3.tar.gz

    2、安装

    然后编辑 “config” 文件,将 “$HTTP_ACCESSKEY_MODULE” 用 “ngx_http_accesskey_module” 替换。然后编译:

    ./configure --add-module=path/to/nginx-accesskey

    3、配置

    修改nginx.conf

    location /download {
    
    accesskey             on;
    
    accesskey_hashmethod  md5;
    
    accesskey_arg         "key";
    
    accesskey_signature   "mypass$remote_addr";
    
    }

    php端:

     // some code
    $url = $filePath.'?'.md5($mypass.$_SERVER['REMOTE_ADDR']);

    完成,可以使用了


    注:lighttpd也有相应模块,并能进行通过时间戳的有效期验证

    参考资料:http://wiki.nginx.org/NginxChsHttpAccessKeyModule

    五、珍爱带宽,远离迅雷

    让 nginx 防止迅雷、快车的多线程下载:

    作用域: server location

    if ($http_range)
    {
    return 405;
    }

    这样给用户端的第二个线程返回405,只让nginx单线程给用户吐数据。没搜到说明,只是网上的一个帖子~

    转:http://itthinker.vicp.net/?p=37

  • 相关阅读:
    关于JVM的一些东西
    网络的最大流最小割定理
    类的生命周期
    关于java中的不可变类(转)
    如何在Linux上升级java
    CAS操作
    如何使用fastJson来解析JSON格式数据和生成JSON格式数据
    计算机中如何实现除数是2的幂次的除法【转载自CSDN】
    python:使用Fabric自动化你的任务
    python中的元类
  • 原文地址:https://www.cnblogs.com/shuaixf/p/2249080.html
Copyright © 2020-2023  润新知