文件服务器通过nginx部署,有大量的视频和图片文件,为了解决视频文件的播放授权,防盗链设置,因此需要通过视频url地址带上加密字符串和时间戳,到期后,文件访问失效,有效的提高视频文件的安全性,同时也避免其他网站盗链视频文件。
nginx安装secure_link模块
配置nginx.conf
location /video {
root /resource/video;
#这里配置了2个参数一个是st,一个是e
secure_link $arg_st,$arg_e;
#st的哈希格式为 自定义秘钥+url+e,e为时间戳单位s,url为请求地址
secure_link_md5 customSecretKey$uri$arg_e;
#这里我们的st是我们按照secure_link_md5的方式计算的哈希,secure_link会比对它计算的哈希值是否与我们的st参数一致
if ($secure_link = "") {
#资源不存在或哈希比对失败
return 402;
}
if ($secure_link = "0") {
#时间戳过期
return 404;
}
if ($request_filename ~* ^.*?\.(mp4)$){
#直接下载防止打开文件 格式: (mp4|txt|jpg)
add_header Content-Disposition 'attachment;';
#如不下载则屏蔽上方代码
}
}
通过JAVA生成防盗链地址,代码如下:
String fullUrl ="http://192.168.0.110/video/demo.mp4";
String relativeUrl = fullUrl.substring(fullUrl.indexOf("/video/"));
String express = String.valueOf(System.currentTimeMillis() / 1000 + nginxExpress);
// +7200秒后地址失效
String authString = nginxSecretKey+relativeUrl+express;
String accessToken = Base64.encodeBase64URLSafeString(DigestUtils.md5Digest(authString.getBytes()));
String accessTokenUrl = fullUrl+"?st="+accessToken+"&e="+express;
return accessTokenUrl;
最终的格式为:
8109

被折叠的 条评论
为什么被折叠?



