zoukankan      html  css  js  c++  java
  • 对网站视频资源的管控-禁止通过视频的url访问视频

    一般静态文件的下载是不经过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 响应头了

  • 相关阅读:
    汉诺塔学习笔记,有不正确的地方请小伙伴们指正~·~
    梯有N阶,上楼可以一步上一阶,也可以一步上二阶。编写一个程序,计算共有多少中不同的走法?
    HTTP Status 500
    java基础知识
    JAVA多线程和并发基础面试问答
    thymeleaf中的th:remove用法
    thymeleaf:局部变量 th:with
    springboot: thymeleaf 使用详解
    eclipse修改工作目录颜色
    The user specified as a definer ('root'@'%') does not exist
  • 原文地址:https://www.cnblogs.com/peteremperor/p/7224887.html
Copyright © 2011-2022 走看看