回答
收藏
分享
举报
求助:PHP+宝塔面板+NGINX 实现静态资源下载~
提问于2023-05-08 09:44

浏览 1.7k

文章标签

1、PHP代码:xx.com/mp3down/index.php

<?php
    //程序根目录
    define('ROOT_PATH', dirname(dirname($_SERVER['SCRIPT_FILENAME'])).'/');

    $txtpath = '《官场女人》/官场女人 01.mp3';

    $_file = ROOT_PATH.$txtpath;
    // 文件不存在
    if(!is_file($_file)){
        exit('文件不存在,可能已被删除');
    }

    $speed = 200;   // 200KB/s
    $_file_limit_size = round(intval($speed) * 1024);
    

    // 启用 nginx X-Accel 下载
    header('Content-Type: application/octet-stream');
    $encoded_fname = rawurlencode('官场女人01.mp3');
    header('Content-Disposition: attachment;filename="'.$encoded_fname.'";filename*=utf-8'."''".$encoded_fname);

    
    header('X-Accel-Buffering: yes');

    // 不限速下载
    if($speed !== ""){
        header('X-Accel-Limit-Rate:'.$_file_limit_size);
    }
    header('X-Accel-Redirect: /mp3down/'. $txtpath);
    exit;
?>


2、宝塔面板->网站->xx.com->设置->伪静态,在里面配置规则如下:

location /mp3down {
     internal;
     root /www/wwwroot/xx.com/;
}

3、重启nginx

4、访问步骤1的网址,无法实现下载,浏览器页面提示如下:

无法访问此网站网址为 https://xx.com/mp3down/index.php 的网页可能暂时无法连接,或者它已永久性地移动到了新网址。
ERR_INVALID_RESPONSE


已修改于2023-05-08 09:44



写下您的回答
发表回答
全部回答(0)

按点赞数排序

按时间排序

提问者
大大的周
这家伙很懒还未留下介绍~
0
文章
1
问答
0
粉丝
相关问答

options请求?需要跨域访问? 

点赞 0
浏览 7.8k

sticky模块只能在linux下吧,win下没有。tomcat好像有个session复制吧,或者可以用共享session。

点赞 0
浏览 7.7k

没办法完全不受影响的,因为mirror是子请求,当子请求未结束时,主请求消耗的内存至少是无法释放的。你可以尝试在/mirror里,把超时时间大幅度调低,包括connect/read/send,再压下看看。

点赞 0
浏览 10.4k