nginx 的第三方模块ngx_http_accesskey_module 来实现下载文件的防盗链
1、具体安装教程:http://www.cnblogs.com/tinywan/p/5983694.html/
2、Nginx配置文件
location /hls { alias /tmp/hls; }location /download { accesskey on; accesskey_hashmethod md5; accesskey_arg "key"; #accesskey_signature "password$remote_addr"; accesskey_signature "password121.1.206.18/1"; alias /tmp/hls; }
其中:
accesskey 为模块开关;
accesskey_hashmethod 为加密方式MD5或者SHA-1;
accesskey_arg 为url中的关键字参数;
accesskey_signature 为加密值,此处为mypass和访问IP构成的字符串。我在这是设置为指定的IP地址,为了只让该一个IP地址可以播放该流既可以
/download 为你下载的目录 【已开启防盗链】
/hls 为m3u8存放文件的地方 【未开启防盗链】
可以看出该两个模块公用一个文件夹 /tmp/hls;
3、测试权限
通过 curl 测试
【1】获取该MD5加密值:
root@iZ231gvwxe7Z:/home/www# echo -n password121.1.206.18|md5sum c7e2d8f498920f1a86e4c95d4a58a27e -
md5加密值为:c7e2d8f498920f1a86e4c95d4a58a27e
echo -n 表示不输出换行符 ,md5sum 加密方法
【2】没带可以的测试结果:403 Forbidden
www@iZ23a7607jaZ:/home/tinywan$ curl -i http://访问的IP地址(这里是直播节点IP地址)/download/S0000_8.m3u8 HTTP/1.1 403 Forbidden Server: nginx/1.8.1 Date: Fri, 21 Oct 2016 07:46:07 GMT Content-Type: text/html Content-Length: 168 Connection: keep-alive <html> <head><title>403 Forbidden</title></head> <body bgcolor="white"> <center><h1>403 Forbidden</h1></center> <hr><center>nginx/1.8.1</center> </body> </html>
【2】携带正确的key的测试结果:可以获取到hls文件下面的m3u8文件
root@iZ231gvwxe7Z:/home/www# curl -i http://访问的IP地址(这里是直播节点IP地址)/download/S0000_8.m3u8?key=c7e2d8f498920f1a86e4c95d4a58a27e HTTP/1.1 200 OK Server: nginx/1.8.1 Date: Fri, 21 Oct 2016 07:26:39 GMT Content-Type: application/vnd.apple.mpegurl Content-Length: 255 Last-Modified: Fri, 21 Oct 2016 07:26:34 GMT Connection: keep-alive ETag: "5809c32a-ff" Accept-Ranges: bytes #EXTM3U #EXT-X-VERSION:3 #EXT-X-MEDIA-SEQUENCE:368 #EXT-X-TARGETDURATION:5 #EXTINF:5.013, S0000_8-368.ts #EXTINF:5.013, S0000_8-369.ts #EXTINF:5.014, S0000_8-370.ts #EXTINF:5.013, S0000_8-371.ts #EXTINF:5.013, S0000_8-372.ts #EXTINF:5.014, S0000_8-373.ts
【3】携带错误的key的测试结果:403 Forbidden
www@iZ23a7607jaZ:/home/tinywan$ curl -i http://访问的IP地址(这里是直播节点IP地址)/download/S0000_8.m3u8?key=c7e2d8f498920f1a86e4c95d4a58a271234 HTTP/1.1 403 Forbidden Server: nginx/1.8.1 Date: Fri, 21 Oct 2016 07:46:07 GMT Content-Type: text/html Content-Length: 168 Connection: keep-alive <html> <head><title>403 Forbidden</title></head> <body bgcolor="white"> <center><h1>403 Forbidden</h1></center> <hr><center>nginx/1.8.1</center> </body> </html>
key 值是根据用户的IP有关的,这样就可以避免被盗链了。
时间: 2024-09-20 09:34:28