Nginx 自带防盗链模块

18 篇文章 0 订阅

Nginx

nginx.conf

    location ^~ /secure/img/ {
        #secure_link $arg_md5,$arg_expires;
        #url?key=xxx&e=xxx
        #secure_link_md5 "sbdx_$secure_link_expires";
        #key生成规则
            secure_link $arg_md5,$arg_expires;
            secure_link_md5 "$secure_link_expires$uri$remote_addr secret";


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

index.php

<?php
for ($i = 1; $i <= 6; $i++)
{
    $url = "/secure/img/{$i}.jpg";
    $e   = time() + 10;  //到期时间
    $key = "{$e}{$url}127.0.0.1 secret";  //这里与nginx.conf的secure_link_md5相对应
    $md5 = base64_encode(md5($key, true));  //MD5第二个参数是关键,返回原始二进制数据
    $md5 = strtr($md5, '+/', '-_');
    $md5 = str_replace('=', '', $md5);
    $url .= "?md5={$md5}&expires={$e}";
    echo "加密访问地址:<a href='{$url}' target='_blank'>{$url}</a> <br>";
    echo "<img src='{$url}' /> <br>\n";
}
?>

被MD5第二个参数搞死了,折腾了好久才发现是这里的问题,True表示 MD5 报文摘要将以16字节长度的原始二进制格式返回

参考文档:http://nginx.org/en/docs/http/ngx_http_secure_link_module.html

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值