Re: Непонятна работа limit_rate
Evgeniy Berdnikov
bgx на protva.ru
Вт Окт 6 10:45:01 UTC 2020
On Tue, Oct 06, 2020 at 03:21:14PM +0500, Илья Шипицин wrote:
> Наличие лимита на размер временного файла это что, повод обрывать
> закачку?
>
> вы отдаете проксируемый контент по мере чтения.
> статус 200 вы отдаете практически сразу.
> поэтому клиент видит 200.
> потом вы начинаете вычитывать ответ, и постепенно отдавать клиенту.
> это регулируется (на выбор)
> proxy_buffering (по умолчанию включено)
> X-Accel-Buffering (можно отдать с апстрима)
> proxy_max_temp_file_size (по умолчанию 1Гб)
> если вы с апстрима вычитываете на wire speed, а отдаете в узную дырочку,
> то все шансы, что ответ попытается сбуферизоваться.
> и это у него получится вплоть до размера 1Гб
> а дальше - вы уже отдали (в сторону клиента) 200. поменять уже не можете.
А с чего бы статус менять? Не влез ответ в буфер -- положили на это болт
(можно удалить файл из буфера, etc) и продолжаем отдавать клиенту дальше.
> это дефолтные настройки. их не меняют с целью сохранения совместимости
> (вдруг кто-то от них зависит).
> предполагается ответственный подход. если вы несчастливы с дефолтными
> настройками - читаете документацию, меняете на нужные.
Не знаю, как ведёт себя nginx в данной конкретной ситуации, но думаю,
что его авторы не столь тупы, чтобы не понимать: на апстриме всегда может
найтись файл, который в буфер не влезет. При любых значениях настроечных
параметров. Это нормальная ситуация, причём если Content-Length с апстрима
пришёл, она опознаётся сразу. Поэтому обрыв передачи файла клиенту
в таких условиях это баг, однозначно.
--
Eugene Berdnikov
Подробная информация о списке рассылки nginx-ru