Nginx не обслуживает большие файлы

При попытке загрузить большой файл (не уверен, какого размера достаточно, при попытке загрузить 5 ГБ) соединение прерывается:

$ wget --verbose http://example.net/large.zip -O /dev/null
--2016-12-14 12:52:38--  http://example.net/large.zip
Resolving example.net (example.net)... 1.2.3.4
Connecting to example.net (example.net)|1.2.3.4|:80... connected.
HTTP request sent, awaiting response...

И это длится вечно, и под вечностью я подразумеваю как минимум 10 минут.

Конфигурация nginx для таких файлов:

location ~* ^.+\.(css|js|ogg|ogv|svg|svgz|eot|otf|woff|mp4|ttf|rss|atom|jpg|jpeg|gif|png|ico|zip|tgz|gz|rar|bz2|doc|xls|exe|ppt|tar|mid|midi|wav|bmp|rtf)$ {
   access_log off;
   log_not_found off;
   expires 7d;
}

Маленькие статические файлы (и под маленькими я имею в виду, например, 50 Мб) обслуживаются нормально.

Отключение access_log; на "on" не помогает, в логах по этому запросу ничего нет.

Изменение типа файла с zip на другой не помогает.

Самое странное, что если я начинаю загрузку и после этого перезапускаю nginx, загрузка начинается нормально. Но только этот. Если вы начнете новую загрузку после перезапуска сервера, она не будет работать таким же образом.

4
задан 14 December 2016 в 08:16
3 ответа

К сожалению, моя ошибка.

Перед этим сервером был настроен CDN. И потребовалось слишком много времени, чтобы полностью получить эти файлы, прежде чем он начал их обслуживать. Вот почему загрузка началась сразу после перезапуска nginx. CDN выдавал неполный файл.

0
ответ дан 3 December 2019 в 03:28

Ответ, кажется, находится в этих ссылках. Один , два . По сути, отключите кеш диска

location / {
  proxy_max_temp_file_size 0;
}
3
ответ дан 3 December 2019 в 03:28

Для меня исправлением были эти две настройки:

В файле: /etc/nginx/nginx.conf

Добавить:

proxy_max_temp_file_size 0;
proxy_buffering off;

Между строками client_max_body_size 128M; и server_names_hash_bucket_size 256; :

http {

client_max_body_size 128M;
proxy_max_temp_file_size 0;
proxy_buffering off;
server_names_hash_bucket_size 256;
1
ответ дан 3 December 2019 в 03:28

Теги

Похожие вопросы