nginx使用secure_link模块防盗链

secure_link模块介绍
ngx_http_secure_link_module是nginx内置的一个防盗链模块
使用这个模块,可以有效的防止文件被其他网站盗用.
有效防止服务器流量流失.

secure_link模块如何启用
编译时加入以下参数(0.7.18后版本可用)

--with-http_secure_link_module

nginx设置secure_link

location  / {
    secure_link $arg_md5,$arg_expires;  #设置两个变量
    secure_link_md5 "key$remote_addr$arg_expires";   #设置md5,当作口令

    if ($secure_link = "") {
        return 403;
    }

    if ($secure_link = "0") {
        return 410;
    }

}

网站生成口令设置[php为例]

$secret = 'key';   // key,自定义秘钥
$ipip=$_SERVER["REMOTE_ADDR"]; 
$expires = time()+300; //这里是300妙内访问有效

$md5 = base64_encode(md5($secret . $ipip . $expires, true)); // MD5生成
$md5 = strtr($md5, '+/', '-_'); // + and / 替换掉
$md5 = str_replace('=', '', $md5); // 替换=

$url = "http://domain.com/test.zip?md5=$md5&expires=$expires";  //安全下载链接demo设置

$arr = array("url"=>$url, "expires"=>date("Y-m-d H:i:s", $expires), "md5"=>$md5);

echo json_encode($arr); //json格式输出

参考来源:
http://blog.csdn.net/hwxia/article/details/47401007
http://nginx.org/en/docs/http/ngx_http_secure_link_module.html

发表评论