Я борюсь с тем фактом, что когда Nginx обслуживает файл размером 1,8 ГБ, когда я помещаю URL-адрес в Chrome или Firefox, загрузка идет со скоростью 5 МБ / с, когда я делаю это с помощью wget или curl, того же URL-адреса, того же клиента pc, загрузка идет со скоростью (мой макс.) 25 Мбит / с. Apache, обслуживающий один и тот же файл, идет со скоростью 25 МБ / с как в браузерах, так и в curl / wget. У меня вопрос: почему?
Это довольно стандартная конфигурация, я помещаю в заголовок либо 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, без разницы.
Очевидно, Apache2 автоматически заполняет заголовки для размера и типа файла, в то время как Nginx, если он не указан, использует text / html для типа, а не размер.
Итак, добавляем:
header("Content-Type: application/octet-stream");
header("Content-length: {$result[0]->size}");
Скорость загрузки увеличилась примерно в 5 раз, работая с моим макс. пропускная способность.