千家信息网

Nginx怎么搭建文件防盗链服

发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,这篇文章主要介绍Nginx怎么搭建文件防盗链服,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!Nginx本身提供了secure_link来完成防盗链功能,可以给服务器文件链接添加
千家信息网最后更新 2025年12月01日Nginx怎么搭建文件防盗链服

这篇文章主要介绍Nginx怎么搭建文件防盗链服,文中介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们一定要看完!

Nginx本身提供了secure_link来完成防盗链功能,可以给服务器文件链接添加时间戳和校验码,从而保护服务器文件不被任意下载盗用。

时序图

Nginx配置

如何安装Nginx这里不再赘述,安装的时候记得开启ngx_http_secure_link_module即可。

./configure --with-http_secure_link_module #编译nginx时加入

安装完成检测:

nginx -V

如果出现以下说明配置成功:

configure arguments: --with-http_secure_link_module --prefix=/usr/local/nginx --with-http_stub_status_module

实例配置

server {   listen    80;   server_name download.52itstyle.com;   charset utf-8;   location / {     #这里配置了2个参数一个是md5,一个是expires     secure_link $arg_md5,$arg_expires;     #md5的哈希格式为 secret+url+expires,expires为时间戳单位s,url为请求地址     secure_link_md5 52itstyle$uri$arg_e;     #这里我们的md5是我们按照secure_link_md5的方式计算的哈希,secure_link会比对它计算的哈希值是否与我们的md5参数一致     if ($secure_link = "") {       #资源不存在或哈希比对失败       return 402;     }     if ($secure_link = "0") {       #失效超时       return 405;     }     #重命名文件名     add_header Content-Disposition "attachment;filename=$arg_f";     alias /data/site/down.52itstyle.com/;   }   error_page  500 502 503 504 /50x.html;   error_page  402 405 /40x.html;   location = /50x.html {     root  html;   }   location = /40x.html {     root  html;   }}

参数详解

secure_link

语法 : secure_link expression;

默认值: 无

配置段:http, server, location

expression由校验值和过期时间组成,其中校验值将会与 secure_link_md5中的指定参数的MD5哈希值进行对比。

如果两个值不一致,$secure_link变量的值是空;如果两个值一致,则进行过期检查;如果过期了,则$secure_link变量值是0;如果没过期,则为1。

如果链接是有时效性的,那么过期时间用时间戳进行设置,在MD5哈希值后面声明,用逗号隔开。如果没有设置过期时间,该链接永久有效。

secure_link_md5

语法 : secure_link_md5 expression;

默认值: 无

配置段:http, server, location

expression指定计算md5哈希值的参数,该md5值将会和url中传递的md5值进行对比校验。expression一般包含uri(如demo.com/s/link uri则为/s/link)以及加密 密钥secret,如果该链接具有时效,则expression需包含$secure_link_expires,expression还可以加入客户端信息,如访问IP,浏览器版本信息等。

Java后端配置

案例,仅供参考:

import org.apache.commons.codec.binary.Base64;import org.apache.commons.codec.digest.DigestUtils;/** * 生成加密連接 */public class SecureLink {  private static String site = "https://down.52itstyle.com/";  private static String secret = "52itstyle";  public static String createLink(String path,String fileName){    String time = String.valueOf((System.currentTimeMillis() / 1000) + 300); // 5分钟有效    String md5 = Base64.encodeBase64URLSafeString(DigestUtils.md5(secret + path + time));    String url = site + path + "?md5=" + md5 + "&expires=" + time + "&f="+fileName;    return url;  }  public static void main(String[] args) {    //https://down.52itstyle.com/2018101025689452.pdf?md5=FnDYyFzCooI9q8sh2Ffkxg&expires=1539847995&f=分布式秒杀架构.pdf    System.out.println(createLink("2018101025689452.pdf","分布式秒杀架构.pdf"));  }}

以上是"Nginx怎么搭建文件防盗链服"这篇文章的所有内容,感谢各位的阅读!希望分享的内容对大家有帮助,更多相关知识,欢迎关注行业资讯频道!

哈希 配置 文件 参数 时间 链接 防盗 一致 有效 两个 信息 内容 分布式 时效 服务器 架构 篇文章 语法 加密 服务 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 软件开发需求确认工具 淮安专业联想服务器 网络安全策略研究报告怎么写 浅谈网络安全威胁防范策略 发票软件开发技术服务怎么开 网络技术的发展和成熟 护苗《网络安全课堂》 笔记本电脑媒体服务器 linux服务器运维好学吗 软件开发的是不是叫程序员 软件开发企业能否开具专用发票 数据库工程师包括什么意思 软件开发女生学怎么样 好学吗 江阴专注软件开发费用 数据库怎么分割csv 软件开发可以外包么 初识数据库ppt 桂阳学计算机软件开发薪资 默纳克服务器复制参数方程 软件开发过程中最重要的环节 android软件开发方案报价 吴江区专业网络技术创新服务 MES软件开发语言 计算机网络安全新问题研究 印之互联网科技有限公司 软件开发主持人的主要工作 seata网络安全 编程软件开发需要多少钱 企业对网络安全的要求 计算机的安全接入服务器地址
0