Nginx模块学习之————accesskey权限模块使用(Nginx防盗链详细解说),防止别人下载文件和图片

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

Nginx模块学习之————accesskey权限模块使用(Nginx防盗链详细解说),防止别人下载文件和图片的相关文章

Nginx expires模块和防盗链

Nginx expires 1.根据文件类型expires # Add expires header for static contentlocation ~* \.(js|css|jpg|jpeg|gif|png|swf)$ {if (-f $request_filehttp://www.aliyun.com/zixun/aggregation/11696.html">name) {root /data/www/wwwroot/bbs;expires 1d;break;}} 2.根据判断

Nginx服务器下防盗链的方法介绍_nginx

修改 /usr/local/nginx/conf/nginx.conf 这个配置文件. 找到 location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { expires 30d; }[/code] 修改成: location ~ .*\.(gif|jpg|jpeg|png|bmp|swf)$ { valid_referers none blocked *.jannn.com jannn.com; if($invalid_referer) { rewrite ^/ y

Nginx和nginx-http-access模块防盗链配置与使用

此篇文章是关于nginx-http-access模块的延伸内容,就如何安装与配置nginx-accesskey防盗链进行了详细的说明,nginx.conf的配置文件也可做为参考,nginx下载认证的配置与使用供大家研究学习与借鉴. 注意:此文整理于互联网,未经过实际的安装测试,所以难免会有错误,如你在阅读本文并在测试的过程中遇到问题,欢迎至风信网官方以下地址进行反馈(http://www.ithov.com/member/article_add.php),我们将与您一起寻找正确的答案. 安装Ng

thinkPHP5 ACL用户权限模块用法详解

本文实例讲述了thinkPHP5 ACL用户权限模块用法.分享给大家供大家参考,具体如下: 最近学习thinkphp5,和以前3.X版本是完全不是一个概念.学习thinkphp5的朋友要注意命名空间思想. 最近做的一个项目,一个检测管理系统,由于为了以后做APP需要,才切换到thinkphp5作为以后的扩展API用的.今天完成的是用户权限控制模块.我把这个mark下来 数据库: role数据库表: `id` int(11) unsigned NOT NULL AUTO_INCREMENT, `n

Nginx模块参考手册:日志模块(Log)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 控制nginx如何记录请求日志.例: log_format gzip '$remote_addr - $remote_user [$time_local] ' '"$request" $status $bytes_sent ' '"$http_referer" "$http_user_agent" "$gzip_ratio"'; access

Python os模块学习笔记

  这篇文章主要介绍了Python os模块学习笔记,本文总结了OS模块的常用方法.实用方法,并给出了两个使用实例,需要的朋友可以参考下 一.os模块概述 Python os模块包含普遍的操作系统功能.例如文件的复制.创建.修改.删除文件及文件夹... 二.常用方法 1.os.listdir() 返回指定目录下的所有文件和目录名. 2.os.remove() 删除一个文件. 3.os.system() 运行shell命令. 4.os.path.split() 函数返回一个路径的目录名和文件名 5

Python中Random和Math模块学习笔记

  这篇文章主要介绍了Python中Random和Math模块学习笔记,本文讲解了math模块的数学常量.常用简单函数.三角函数等,讲解了random模块的常用函数.随机挑选和排序等内容,需要的朋友可以参考下 由于最近经常使用到Python中random,math和time``datetime模块, 所以决定花时间系统的学习一下 1. math模块 math中的函数不可以用于太过复杂的数的运算, 如果需要复杂数的运行最好使用cmath模块中同名函数, 如果想要更加高级的数学功能,可以考虑选择标准

Python functools模块学习总结

  这篇文章主要介绍了Python functools模块学习总结,本文讲解了functools.partial.functool.update_wrapper.functool.wraps.functools.reduce.functools.cmp_to_key.functools.total_ordering等方法的使用实例,需要的朋友可以参考下 文档 地址 functools.partial 作用: functools.partial 通过包装手法,允许我们 "重新定义" 函数

Nginx模块参考手册:SSI模块(SSI)

这些模块默认会全部编译进Nginx,除非手工指定某个模块在configure时排除. 这个模块为处理服务器端包含(SSI)的输入提供一个过滤器,目前所支持的SSI命令并不完善.如下例: location / { ssi on;} 指令 ssi 语法:ssi [ on | off ] 默认值:ssi off 使用字段:http, server, location, location中的if字段 启用SSI处理.注意如果启用SSI,那么Last-Modified头和Content-Length头不会