Модуль ngx_http_slice_module
Модуль ngx_http_slice_module (1.9.8) — это фильтр, который разбивает запрос на подзапросы, каждый из которых возвращает определённый диапазон ответа. Фильтр обеспечивает более эффективное кэширование больших ответов.
Данный модуль не включен по умолчанию, его следует включить с помощью параметра конфигурации --with-http_slice_module.
Известные проблемы
В настоящее время модуль не работает должным образом в подзапросах, таких как обновление кэша в фоновом режиме. В этом случае запрос создаётся без поддержки байтовых диапазонов.
Пример конфигурации
location / {
slice 1m;
proxy_cache cache;
proxy_cache_key $uri$is_args$args$slice_range;
proxy_set_header Range $slice_range;
proxy_cache_valid 200 206 1h;
proxy_pass http://localhost:8000;
}
В этом примере ответ разбивается на кэшируемые фрагменты размером 1 мегабайт.
Директивы
| Синтаксис: | slice size; |
|---|---|
| Значение по умолчанию: | slice 0; |
| Контекст: | http, server, location |
Устанавливает размер фрагмента. Нулевое значение отключает разделение ответов на фрагменты. Обратите внимание, что слишком маленькое значение может привести к чрезмерному использованию памяти и открытию большого количества файлов.
Для того, чтобы подзапрос вернул необходимый диапазон, переменная $slice_range должна быть передана прокси-серверу в качестве поля заголовка запроса Range. Если кэширование включено, $slice_range следует добавить в ключ кэша, а кэширование ответов со статусом 206 должно быть включено.
Встроенные переменные
Модуль ngx_http_slice_module поддерживает следующие встроенные переменные:
$slice_range- текущий диапазон фрагмента в формате HTTP byte range, например,
bytes=0-1048575.
© 2002-2021 Igor Sysoev
© 2011-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/http/ngx_http_slice_module.html