Nginx配置防盗链,服务端JAVA实现(可用作视频、文件、图片资源等)

nginx配置

  1. 进入到Nginx的安装目录
  2. 输入命令./configure --with-http_secure_link_module,安装secure_link模块,接着执行make && make install
  3. 进入到nginx的配置文件nginx.conf,进行如下配置(主要是添加了secure_link、secure_link_md5),其中secret_key为密钥,可自行修改,必须保证服务端的密钥与nginx的密钥相同即可.可自行在location后添加拦截规则
 server {
        listen       80;
        server_name  localhost;

        location / {
        secure_link $arg_md5,$arg_expires;  #这里配置了2个参数一个是arg_md5,一个是arg_expires
        secure_link_md5 "secret_key$secure_link_expires$uri"; #secret_key为自定义的加密串   
    if ($secure_link = "") {
        return 403;       #资源不存在或哈希比对失败
        }
    if ($secure_link = "0") {
        return 403;      #时间戳过期 
        }
        }
        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }
  • secure_link

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

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

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

  • secure_link_md5

该md5值将会和url中传递的md5值进行对比校验(所以需要保证值得顺序一致)

Java代码配置

import org.apache.commons.codec.binary.Base64;
import org.apache.commons.codec.digest.DigestUtils;

    public class TEST {
    public static void main(String[] args) {
        String time = String.valueOf(System.currentTimeMillis() / 1000 + 600);// +600代表600秒后地址失效
        String md5 = Base64.encodeBase64URLSafeString(DigestUtils.md5("secret_key"+time+"/test.mp4"));
        System.out.println("http://192.168.1.9/test.mp4?md5=" + md5 + "&expires=" + time);
}
}

在这里插入图片描述

  • 注意:

Java中得md5与nginx中的secure_link_md5是相互对应的,顺序不能写错,出现不对应的问题。

  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值