一般静态文件的下载是不经过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. Linux - ubuntu vMwareTools安装

    ubuntu vMwareTools安装 不安装很麻烦,虚拟机中的内容,包括文件.无法复制到pc端.同样的pc端的内容也无法复制到虚拟机中. 1.点击虚拟机,选择安装VMwareTools 这个时候就 ...

  2. linux 3.10的kdump配置的小坑

    之前在2.6系列linux内核中,当发现某个模块不要在保留内核中加载的时候,可以通过blacklist参数将其在/etc/kdump.conf中屏蔽 blacklist <list of ker ...

  3. vue初学者

    先分享一波福利 vue学习视频    链接:https://pan.baidu.com/s/1ggSfE75 密码:7h2a        1.先安装 webpack vue-cli          ...

  4. jsp页面从标签属性中获取值

    你还可以在"data-*" 属性里使用json语法,例如 <div id="awesome-json" data-awesome='{"game ...

  5. Linux下安装mysql(yum和源码编译两种方式)

    这里介绍Linux下两种安装mysql的方式:yum安装和源码编译安装. 1. yum安装 (1)首先查看centos自带的mysql是否被安装: # yum list installed |grep ...

  6. springMVC中@RequestParam和@RequestBody注解的用法

    springMVC中@RequestParam注解用在Controller层获解析.提取参数,当然你也可以用request.getParameter("name")来获取参数,而@ ...

  7. android CheckBox与监听

    <CheckBox  android:id="@+id/cb1"  android:layout_width="fill_parent"  android ...

  8. VisionPro学习笔记:用IEEE1394相机抓取图像

    1)找到采集卡: CogFrameGrabber1394DCAMs cameras = new CogFrameGrabber1394DCAMs(); 2)列举相连接的相机: ICogFrameGra ...

  9. execl列数据成等差递增递减

    如上图若想以10,20,30...这样递增: 1).首先需选中10,20所在的单元格,鼠标移至20所在的单元格右下角 2).此时会出现一个十字"十"符号,点击直向下拖动至某个地方, ...

  10. linux上的组管理

    上一次我们谈了CentOS上的用户管理,现在我们再来谈下CentOS上的用户组管理. groupadd创建一个新的组 用法如下: groupadd [选项] groupname 常用选项: -f 强制 ...