При докачках(206) nginx отдает данные с начала файла
nickolay
nginx-forum на nginx.us
Вс Дек 12 03:31:08 MSK 2010
Linux x86
nginx version: nginx/0.8.53
Ключевые моменты конфигурации:
perl_require files.pm;
location /f {
perl files::download;
}
Скрипт проверяет наличие файла на
файловой системе, права доступа к
файлу, после чего выполняет внутренний
редирект:
$r->allow_ranges;
$r->header_out('Content-Length', $file_size);
$r->send_http_header("$mime");
$r->internal_redirect($internal_redirect_link);
return OK;
Качаю с обрывами wget-ом с ключом "-c", файл
получается правильным(совпадает md5sum с
оригиналом).
Качаю Firefox-ом, также с обрывами, файл
также скачивается, размер правильный,
но при каждом последующем запросе за
очередным куском файла, nginx возвращает
начальную часть файла, хотя в ответе
указывает правильные range и отдаваемый
размер.
Сделал tcpdump, сравнил запросы от wget и
Firefox. Заметил, что Firefox шлет еще условие
If-Range и еще вот это в заголовке перед
указанием Range:
X-REMOVED:.Range
nginx честно отдает 206-й статус (в логе
кстати пишет 200).
Если надо, могу выложить дамп обмена.
Posted at Nginx Forum: http://forum.nginx.org/read.php?21,157886,157886#msg-157886
Подробная информация о списке рассылки nginx-ru