Отловить момент, когда закачка завершена

AleXXX V. NovikoFF alexxx at alexxx.ru
Tue Feb 7 11:04:17 MSK 2006


Класс, то, что я давно искал, а тогда еще вопрос в догонку:

Вот я передаю от бэкэнда заголовок X-Accel-Redirect нгинкс начинает тихо нудно отдавать большущий файл,
а мне бы нужно как-то ограничить размер передаваемых данных, допустим разрешить клиенту забрать не весь файл до конца, а, например, только 100Мб (не важно частями, или с начала),
может есть где-нибудь в загашнике какой-нибудь хитрый заголовок (для комплекта к  X-Accel-Redirect) для такого ограничения?


Tue, 7 Feb 2006 10:05:28 +0300 (MSK) Вы писали:

> On Tue, 7 Feb 2006, AleXXX V. NovikoFF wrote:
> 
> > Возникла необходимость отдавать файлы nginx-ом, мне нужно точно знать, сколько nginx отдал клиенту байтиков, и отловить тот момент, когда закачка завершена (допустим запускать какой-то скрипт, или писать что-то куда, событие, может, отправлять...)
> > Есть ли какие-то средства для этого? Или нужно писать модуль (править исходник)?
> 
> Как-то так:
> 
>      location  / {
>          set $orig_uri   $uri;
>          set $orig_args  $args;
> 
>          post_action  /post;
> 
>          ...
>      }
> 
>      location = /post {
>          proxy_pass        ...
>          proxy_set_header  x-orig-url  $orig_uri?$orig_args;
>          proxy_set_header  x-sent      $body_bytes_sent;
>      }
> 
> Но нужно учесть, что $body_bytes_sent - это количество переданных клиенту
> данных с точностью до размера ядерного буфера TCP.
> 
> 
> Игорь Сысоев
> http://sysoev.ru

-- 
AleXXX V. NovikoFF <alexxx at alexxx.ru>






More information about the nginx-ru mailing list