Nginx视频防盗链设置

文件服务器通过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;

最终的格式为:

http://192.168.0.110/video/demo.mp4?st=-HPKxDy0aQkSJE3tXULl5w&e=1548816445?st=-HPKxDy0aQkSJE3tXULl5w&e=1548816445

你可能感兴趣的:(JAVA)