一般静态文件的下载是不经过PHP的,直接由web服务器发送到客户端。但有时候需要实现文件下载的权限控制等功能,这时候就需要经由PHP程序来做权限验证。简单粗暴的做法是,在PHP程序里边先验证权限,验证通过后再读取文件内容发送给客户端。这种做法确实可以满足需求,但是很明显的,由PHP来发送静态文件内容远远不如直接由web服务器发送静态文件高效,而且会占用更多的资源。怎样既可以实现动态权限验证,又可以高效的发送静态文件呢?像这种需求肯定不是个例,而且也相当的普遍。于是,便有了 Apache 的mod_xsendfile 模块,以及 nginx的 X-accel。

Apache mod_xsendfile 模块首页:https://tn123.org/mod_xsendfile/在Debian里,直接 apt-get install libapache2-mod-xsendfile 就可以安装这个模块了。
注意在Debian6里,apt仓库里xsendfile
模块的版本是0.9,而 XSendFilePath、XSendFileIgnoreLastModified
以及 XSendFileIgnoreEtag
指令是在0.10版本引进的。所以在0.9版本里使用XSendFilePath指令会出现“Invalid command
'XSendFilePath', perhaps misspelled or defined by a module not included
in the server configuration”的错误,解决办法是使用0.9版引进的 XSendFileAllowAbove
指令,或升级 xsendfile 模块到最新版(建议升级版本)

nginx X-accel 首页:http://wiki.nginx.org/X-accel
nginx不需要安装额外的模块,直接配置就行了。
注意在nginx里,当设置了 X-Accel-Redirect 头之后,nginx会删除掉后端应用自定义的头部(如 X-Abc-Def ),只保留一些特殊的后端应用设置的头部(如 Content-Type、Content-Disposition等),这样就没办法向客户端发送自定义响应头了。为了避免这种情况的发生,需要做一些设置:

location /protected/ {
internal;
root /opt/www/files/;
add_header X-Abc-Def $upstream_http_x_abc_def;
}

注意是 $upstream_http_x_abc_def ,而不是 $upstream_x_abc_def
这样就既能告知 nginx 代为发送静态文件,也能发送自定义 http 响应头了

对网站视频资源的管控-禁止通过视频的url访问视频的更多相关文章

  1. Python 下载网络mp4视频资源

    最近着迷化学, 特别是古代的冶炼技术,感叹古人的聪明. 春秋时期的炼铁方法是块炼铁,即在较低的冶炼温度下,将铁矿石固态还原获得海绵铁,再经锻打成的铁块.冶炼块炼铁,一般采用地炉.平地筑炉和竖炉3种.铁 ...

  2. Java网站视频资源加密

    ----------------------------------------------------------分享此文章,只为让版权能够得到更多的保护---------------------- ...

  3. 前端面试题总结(js、html、小程序、React、ES6、Vue、算法、全栈热门视频资源)

    写在前面 参考答案及资源在看云平台发布,如果大家想领取资源以及查看答案,可直接前去购买.一次购买永久可看,文档长期更新!有什么意见与建议欢迎您及时联系作者或留言回复! 文档描述 本文是关注微信小程序的 ...

  4. 苹果cms怎么上传本地视频资源

    今天我们来简单分享下苹果cms怎么上传本地视频,采集资源站的资源我们已经熟知了,但是有的伙伴们想要上传自己制作或是录制的视频应该怎么操作呢?这个问题有多种方法,今天我们先简单的说2种方法. 一,上传到 ...

  5. 视频资源下载方法[download video resources]

    笔者做视频时钟分析,需要用到大量特殊的视频,如何获取需要的视频是一个问题? 以下载NBA视频为例: Tools:①腾讯视频软件 (自行下载)  ②批处理文件(下文会给出代码) convert.bat ...

  6. 优分享VR开源啦,优分享VR是基于Google VR开发的一款手机VR视频资源的聚合软件

    欢迎来到优分享VR开源项目 优分享VR 开源中国Git地址: http://git.oschina.net/xumingwang/youkes_vr 优分享VR是 优分享安卓APP VR视频播放开源部 ...

  7. 学习java的视频资源(尚学堂)(比较老旧,但是还是挺好用)

    本人新手,转入IT,一开始在学校的时候看过尚学堂 马士兵讲过的java基础视频教程,这次深入学习呢,就从百度云盘找了一整套的视频资源.之后越深入的学习呢,发现这些视频资源VeryCD上都发布了,地址 ...

  8. 推荐一些C#相关的网站、资源和书籍 (转载自http://www.cnblogs.com/jiangxiaofan/p/3808316.html)

    推荐一些C#相关的网站.资源和书籍 (转载自http://blog.csdn.net/chinacsharper/article/details/17514923)   一.网站 1.http://m ...

  9. 如何使用油猴脚本不要vip就能观看各大视频网站如腾讯,爱奇艺等的vip视频

    如何使用油猴脚本不要vip就能观看各大视频网站如腾讯,爱奇艺等的vip视频 首先打开谷歌商店(这里需要fq,如不能fq的小伙伴请看上面写的Chrome怎么访问外网) 搜索Tampermonkey,点击 ...

随机推荐

  1. Hystrix-命令名称、分组以及线程池划分

    命令名称: 1.1 以继承的方式实现Hystrix命令使用类名作为默认的命令名称,我们也可以在构造函数中通过Setter静态类来设置 1.2 为了保存每个命令分配的Setter分配,你也可以像这样缓存 ...

  2. 如何从零开始设计一款漂亮的移动APP?

    以下内容由Mockplus团队翻译整理,仅供学习交流,Mockplus是更快更简单的原型设计工具. 我13岁时开始学习平面设计.我从网上课程学会了设计网站,并习惯于全天使用Photoshop和Affi ...

  3. linkin大话面向对象--GC和jar包

    GC java的垃圾回机制是java语言的重要机制之一.当程序创建对象,数组等引用类型实体时,系统都会在堆内存中为之分配一块内存区,对象就保存在这块内存区中.当这块内存不再被任何变量引用时,这块内存就 ...

  4. MySQL5.6安装(RPM)笔记

    1. 检查MySQL是否安装,如果有安装,则移除(rpm –e 名称)[root@localhost ~]# rpm -qa | grep -i mysqlmysql-libs-xxxxxxxxxx. ...

  5. JSP错误页面的处理和exception对象

    exception对象可以使用的主要方法如下所示. l        getMessage():该方法返回错误信息. l        printStackTrace():该方法以标准错误的形式输出一 ...

  6. PHP date()函数详解

    date (PHP 4, PHP 5) date - 格式化一个本地时间/日期 说明¶ string date ( string $format [, int $timestamp ] ) 返回将整数 ...

  7. SpringMVC数据验证(AOP处理Errors和方法验证)

    什么是JSR303? JSR 303 – Bean Validation 是一个数据验证的规范,2009 年 11 月确定最终方案. Hibernate Validator 是 Bean Valida ...

  8. [PHP]PDO占位符预处理在 IN 和 LIKE 中用法

    两点注意项: 1. 占位符 (?) 必须被用在整个值的位置,不需要引号等其它字符. 2. 参数按数组元素顺序依次传递给占位符. <?php /** * PDO基于占位符的查询预处理 * * @l ...

  9. 初识DIV+CSS

    div元素是用来为html文档内大声(block-level)的内容提供结构和背景的元素. css是Cascading Style Sheets(层叠样式表单)的缩写,是一种用来表现html或xml等 ...

  10. 前端 js技术

    1.JavaScript代码存在形式 <!-- 方式一 --> <script type"text/javascript" src="JS文件" ...