• 对网站视频资源的管控-禁止通过视频的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 响应头了

  • 相关阅读:
    【转】Visual Studio 2008中使用科学计算库GSL
    【转】[Python Tip]如何在Windows下方便地进入命令行运行程序
    【转】URL Encoding (URL转义字符)
    RDLC报表,纯文字内容,动态数据源 解决方案
    C# 数值计算
    标准库List使用注意
    VS2008 运行出现 “无法启动该程序 计算机中丢失 MSVCR90D.dll”
    数据结构在游戏中的简单应用(转)
    SQL SERVER 2005 四种排序函数
    2010.11.30
  • 原文地址:https://www.cnblogs.com/peteremperor/p/7224887.html
Copyright © 2020-2023  润新知