首页 > 编程语言 >php利用X-sendfile控制下载

php利用X-sendfile控制下载

时间:2023-06-19 11:47:40浏览次数:59  
标签:sendfile Accel nginx file php 目录 下载

为了控制静态文件下载,一般方法需要PHP用file_get_contents读取文件,再传给客户端。节省资源的方法是利用nginx的x-sendfile模块,原理是 nginx 上设置一个特殊资源目录,客户端无法直接读取,需要经过php许可后才能下载。

 1、设置nginx
location /request/uri/ {
internal;
alias /real/path/;
}

目录 /request/uri/ 被设置为 internal, 所以客户端无法直接访问。

alias 对应的文件所在真实目录,一般这个目录不在公开目录下,也无法访问。

注意要设置生效。

nginx -s reload
2、访问php
// 验证是否有权限: 费这么大劲就是为了这个
// 获取要下载的文件名称: $p_file = '/request/uri/filename.ext';                     
// 告诉nginx放行:
header('Content-type: application/octet-stream');
// 这里的$fileName = basename($p_file) 也就是 filename.ext
header('Content-Disposition: attachment; filename="' . $fileName . '"');
// nginx sendfile
header('X-Accel-Redirect: '.$p_file);

还有一些控制选项,需要提前 X-Accel-Redirect 发送

X-Accel-Limit-Rate: 1024
X-Accel-Buffering: yes|no
X-Accel-Charset: utf-8

 

标签:sendfile,Accel,nginx,file,php,目录,下载
From: https://www.cnblogs.com/mo3408/p/17490744.html

相关文章

  • nginx限制并发数和限制下载速度方法
    以下代码写在nginx配置规则里面,宝塔面板的用户可以直接在宝塔里面修改。http{limit_conn_zone$binary_remote_addrzone=perip:10m;...server{...location/{limit_connperip1;limit_rate_after500m;limit_rate200k;}limit_conn_zone$binary_remote_addr:加......
  • php解决 mysql_connect(): The mysql extension is deprecated and will be removed i
    Themysqlextensionisdeprecatedandwillberemovedinthefuture:usemysq翻译:mysql_connect这个模块将在未来弃用,请你使用mysqli或者PDO来替代。解决方法:打开php.ini配置文件把display_errors=On改为display_errors=Off改完之后重启服务就可以了。  ......
  • PHP环境安装
    passTRANSLATEwithxEnglishArabicHebrewPolishBulgarianHindiPortugueseCatalanHmongDawRomanianChineseSimplifiedHungarianRussianChineseTraditionalIndonesianSlovakCzechItalianSlovenianDanishJapaneseSpanishD......
  • PHP下载文件返回错误码500的原因之一
    背景:项目使用一个php接口供前端下载一个打包好后的文件,一直用的好好的,有一天下载不了了。HTTP错误码是500,查看错误日志:原因如报错截图可知是内存限制问题。感谢如何修改PHP的memory_limit限制@wwlww,使用方法3快速解决了问题以下是转发wwlww的原文:如何设置memory_limit方......
  • Vivado全版本下载分享
    Vivado是由Xilinx公司开发的一款用于FPGA设计和开发的综合设计环境。它包括了高层次综合(HLS)、逻辑设计、约束管理、IP核管理、仿真、综合、实现和调试等功能,支持面向最新FPGA器件的设计。这里分享一下Vivado的电脑安装配置推荐,以及​各版本Vivado下载链接。​一、电脑配置推荐......
  • 到底什么是php javascript
    php就是将 静转动(静态页面转为动态页面),有些页面在你访问之前他不是真实存在的,而是依据你提交的东西而动态生成的html页面,比如使用搜索引擎时候,你提交了关键字php,搜索引擎会到数据库中找到与php相关的信息,然后将这些信息排序和组装成一个html页面,将这个实时生成的页面返回给你的浏......
  • kali windows 壁纸收藏 & 虚拟机下载
               链接:https://pan.baidu.com/s/1n9qf6h0wDGhcOt5dj-DdTg提取码:ny2s该虚拟机是用官方iso镜像文件创建的Vm虚拟机文件,解压导入Vmware即可,win登录密码abdal。本人做了一点优化和汉化。......
  • gitlab或者gitlab或者sourceforge怎么用正确的姿势下载代码文件
    由于众所周知的原因,锅内是无法正常下载者三者的,包括安卓代码和安卓开发所用的依赖等等。我给出我的方法,看看能不能帮到你。镜像站点去下载。用过锅内代码托管平台码云下载。它可以导入第三方代码平台。找一个文件中转站,比如NC网盘等等,提取下载链接用讯雷网盘离线下载,在......
  • PHP批量压缩图片,基于TP5,fastadmin
    <?php/***CreatedbyPhpStorm.*User:zhuo<[email protected]>*O(∩_∩)O*Date:2022-7-709:34:38*/namespaceapp\command;usethink\Image;usethink\image\Exception;usethink\console\{Command,Input,Output};//压缩图片classCom......
  • ZBrush 2021中文版【ZBrush 2021】下载 附安装教程
    PixologicZBrush2021软件是一款非常专业的3D数字绘画雕刻软件,专门为数字雕刻行业设计的行业标准。本软件为用户提供了各种雕刻所需的软件工具和功能,可使雕刻工程师在实际工作中,根据不同的情况,选择相应的工具进行 建模、绘制纹理以及制作等操作,从而简化工作流程,提高雕刻绘制效率。......