浏览器(chrome,firefox)使用 nginx 下载静态文件很慢,使用 apache2 则不然

浏览器(chrome,firefox)使用 nginx 下载静态文件很慢,使用 apache2 则不然

令我苦恼的是,当使用 Nginx 处理 1.8 Gb 文件时,当我将 URL 放入 Chrome 或 Firefox 中时,下载速度为 5 Mb/s,而当我使用 wget 或 curl 执行此操作时,相同的 URL,相同的客户端 PC,下载速度为(我的最大值)25 Mb/s。使用 Apache 处理相同的文件时,浏览器和 curl/wget 的下载速度均为 25Mb/s。我的问题是:为什么?

这是一个非常默认的配置,我将 X-Sendfile (apache2) 或 X-Accel-Redirect (Nginx) 放在标头中,我尝试了 nginx 的几种配置,我可以使用 limit_rate 减慢它的速度,但不能加快。这是我在 /etc/nginx/sites-enabled 中的默认链接的位置部分:

location files/ {
        internal;
        alias /var/www/html/;
        #directio 100m;
        output_buffers 2 512k;
        limit_rate 30000k;
        sendfile_max_chunk 0;

}

我打开了 directio,保留或保留其他选项,打开/关闭 sendfile,没有区别。

答案1

显然,Apache2 会自动填写大小和文件类型的标题,而 Nginx 在未指定时,则使用 text/html 作为类型,而不使用大小。

因此,添加:

header("Content-Type: application/octet-stream");
header("Content-length: {$result[0]->size}");

下载速度提高了约 5 倍,可适应我的最大带宽。

相关内容