一般静态文件的下载是不经过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. 解决svn--Unable to connect to a repository at URL ‘https://xxxxxx’ 问题

    在checkout项目时,出现如下错误: Error  Unable to connect to a repository at URL 'https://XXXX' Error  Access to ...

  2. Python中变量和常量的理解

    一.变量的定义:把程序运算的中间结果临时存到内存里,以备后面的代码继续调用,这几个名字的学名就叫做"变量". 二.变量的作用:变量用于存储要在计算机程序中引用和操作的信息.它提供了 ...

  3. java ecplise配置

    运行java项目首先配置java运行时环境:Window->Preferences->Java->Installed JREs 修改为jdk:C:\Program Files\Jav ...

  4. android新建项目

    MinMum Required SDK :最低支持的Android api的版本,你的应用不能在低于这个版本的手机上面运行 Target SDK:你的应用最高支持android api版本 Compi ...

  5. Gitlab权限管理-issue管理[六]

    标签(linux): git 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 设置好密码后登录进入管理目录 创建组 设置组名和权限 创建用户 已有四个用户了 给p ...

  6. LVS-DR模式(原理图详解)

    标签(空格分隔): linux 笔者Q:972581034 交流群:605799367.有任何疑问可与笔者或加群交流 前言 LVS一共四种工作模式.其中,DR模式是比较常用的模式之一,配置较麻烦,这里 ...

  7. [python] 2、python使用pyaudio进行录音,及其在python虚拟环境virtualenv中安装遇到的问题

    1.pyaudio安装大背景 最近在做智能音箱,需要编写声音拾取代码,我先是百度两篇比较常见的用python进行录音的操作的文章: python写一个录音小程序:http://blog.csdn.ne ...

  8. PHP使用file_get_contents或curl请求https的域名内容为空或Http 505错误的问题排查方法

    前段日子,突然接到用户的反馈,说系统中原来的QQ登录.微博登录通通都不能用,跟踪代码进去后发现,是在 file_get_contents这个函数请求QQ登录的地方报错,在用该函数file_get_co ...

  9. 浅探element-ui2组件源码之upload

    最近不小心更新了element-ui的版本,已经到了2.1.0,以前修改的源码都失效了. 于是重新尝试下面的指令重新修改: git clone https://github.com/ElemeFE/e ...

  10. spring实例化bean三种方式

    我看了这篇博文<https://www.cnblogs.com/zhanglei93/p/6221546.html>,以及自己实践总结了关于spring实例化bean对象的3种方式. 一. ...