php – Laravel下载响应,具有热链接保护和低内存使用率

我有一个文件下载网站,我通过Laravel为热链接保护提供文件,但似乎下载让我的PHP进程保持很长时间(因为一些用户下载速度很差).

对于热链接保护,我在用户进入下载页面时创建会话,并在单击下载按钮时进行检查.

有没有办法进行热链接保护,还是只能降低内存使用量?

这是触发下载的代码

if($request->session()->get('file') == $apk->generated_filename) 
        {   
            $headers = array
            (
                'Content-Type' => 'application/vnd.android.package-archive'
            );
            Apk::find($apk->id)->increment('downloads_co');
            return response()->download(config('custom.storage') . $apk->generated_filename, $apk->filename, $headers);
        }

解决方法:

使用x-accel-redirect和内部位置

绝对最好的方法是在Nginx端使用http://nginx.org/r/internal,并在上游端使用x-accel-redirect的HTTP响应头字段进行响应,以便Nginx处理.

除非被http://nginx.org/r/proxy_ignore_headers等人阻止,否则Nginx会对x-accel-redirect上游HTTP响应头执行特殊处理 – 它会在Nginx中导致内部重定向(您应该对标记有内部指令的位置执行此操作,以确保仅直接访问这些文件的可能方式是通过这种内部重定向.

这里的想法是,您的PHP脚本仍然可以以您认为必要的任何方式处理身份验证和热链接保护 – 用户身份验证,链接过期,基于AI的单独黑名单以及所有 – 但在一天结束时,脚本完成后,文件到客户端的实际馈送将以最有效的方式直接通过Nginx完成.

(请注意,使用internal关键字非常重要 – 它确保恢复下载的唯一方法,无论出于何种原因中断,都会先通过与PHP脚本联系.所以,借助Nginx cookbook中这个聪明且经过验证的技巧,你将获得两全其美 – 完全控制热链接和最佳资源利用率.)

相关文章

Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一...
本地项目配置 1 复制 luffy/settings/dev.py为prop.py 修改l...
nginx不仅可以隐藏版本信息,还支持自定义web服务器信息 先看...
一 、此次漏洞分析 1 nginx HTTP/2漏洞 [nginx-announce] ng...
###进入nginx 目录cd /usr/local/nginx###递归显示 2 级目录...
在cmd命令窗口输入下面命令进行查看 tasklist /fi "ima...