首页 > 系统相关 >nginx文件下载防盗链

nginx文件下载防盗链

时间:2024-08-08 09:53:36浏览次数:8  
标签:secure expires nginx link 防盗链 arg 下载

文件下载防盗链

使用场景

客户端发起下载申请  ---> app服务器(文件上传会生成自己格式的文件名)
app服务器返回下载地址 ---> 客户端
客户端下载   ---> web 服务器(nginx)

nginx配置

### 开启secure_link模块
编译开启 --with-http_secure_link_module



### 配置nginx
server {
    listen    80;
    server_name download.peter-zhou.com;

    location / {
        #设置md5 expires  
        secure_link $arg_md5,$arg_expires;

        #设置secret+url+expires
        secure_link_md5 "123456$uri$arg_expires";


        #比较哈希值
        if ($secure_link = "") {
            return 403;
        }

        #验证是否超时
        if ($secure_link = "0") {
            return 410;
        }

        #直接下载防止打开文件
        if ($request_filename ~* ^.*?\.(mp4|txt|jpg)$){
            add_header Content-Disposition 'attachment;';
        }

        #重命名
        add_header Content-Disposition "attachment;filename*=utf-8'zh_cn'$arg_filename";

    }
}



### app服务器功能实现
实现返回客户端url为: url+md5+expires+filename
<?php

$secret = '123456';
$path   = 'xxxx';
$expire = time()+300;

$md5 = base64_encode(md5($secret.$path.$expire,true));
$md5 = strtr($md5,'+/','-_');
$md5 = str_replace('=','',$md5);
echo 'http://download.peter-zhou.com/'.$path.'?md5='.$md5.'&expires='.$expire.'&filename='.$filename



### 例如
http://down.peter-zhou.com/123.pdf?md5=FnDYyFzCooI9q8sh1Ffkxg&expires=1539847995&filename=test.pdf


注意:md5、expires、filename 等参数均可以替换成别的名字,相应的nginx上的参数也替换


### 官方文档
官方文档:http://nginx.org/en/docs/http/ngx_http_secure_link_module.html

标签:secure,expires,nginx,link,防盗链,arg,下载
From: https://www.cnblogs.com/kkit/p/18348330

相关文章