Path: blob/main/xml/ru/docs/http/ngx_http_slice_module.xml
1 views
<?xml version="1.0"?>12<!--3Copyright (C) Nginx, Inc.4-->56<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">78<module name="Модуль ngx_http_slice_module"9link="/ru/docs/http/ngx_http_slice_module.html"10lang="ru"11rev="4">1213<section id="summary">1415<para>16Модуль <literal>ngx_http_slice_module</literal> (1.9.8) — это фильтр,17который разбивает запрос на подзапросы,18каждый из которых возвращает определённый диапазон ответа.19Фильтр обеспечивает более эффективное кэширование больших ответов.20</para>2122<para>23По умолчанию этот модуль не собирается, его сборку необходимо24разрешить с помощью конфигурационного параметра25<literal>--with-http_slice_module</literal>.26</para>2728</section>293031<section id="issues" name="Известные проблемы">3233<para>34В настоящий момент модуль не работает как ожидается с подзапросами, например35<link doc="ngx_http_proxy_module.xml" id="proxy_cache_background_update">36фоновым обновлением кэша</link>.37В этом случае построение запроса происходит без указания диапазона байт.38</para>3940</section>414243<section id="example" name="Пример конфигурации">4445<para>46<example>47location / {48<emphasis>slice</emphasis> 1m;49proxy_cache cache;50proxy_cache_key $uri$is_args$args<emphasis>$slice_range</emphasis>;51proxy_set_header Range <emphasis>$slice_range</emphasis>;52proxy_cache_valid 200 206 1h;53proxy_pass http://localhost:8000;54}55</example>56В данном примере57ответ разбивается на кэшируемые фрагменты размером в 1 мегабайт.58</para>59</section>606162<section id="directives" name="Директивы">6364<directive name="slice">65<syntax><value>размер</value></syntax>66<default>0</default>67<context>http</context>68<context>server</context>69<context>location</context>7071<para>72Задаёт <value>размер</value> фрагмента.73Нулевое значение запрещает разбиение ответов на фрагменты.74Обратите внимание, что слишком низкое значение может привести75к излишнему потреблению памяти76и открытию большого количества файлов.77</para>7879<para>80Для того, чтобы подзапрос вернул необходимый диапазон,81переменная <var>$slice_range</var> должна быть82<link doc="ngx_http_proxy_module.xml" id="proxy_set_header">передана</link> на83проксируемый сервер в качестве поля <literal>Range</literal> заголовка запроса.84Если включено85<link doc="ngx_http_proxy_module.xml" id="proxy_cache">кэширование</link>,86то необходимо добавить <var>$slice_range</var> в87<link doc="ngx_http_proxy_module.xml" id="proxy_cache_key">ключ88кэширования</link>89и <link doc="ngx_http_proxy_module.xml" id="proxy_cache_valid">включить</link>90кэширование ответов с кодом 206.91</para>9293</directive>9495</section>969798<section id="variables" name="Встроенные переменные">99100<para>101Модуль <literal>ngx_http_slice_module</literal>102поддерживает следующие встроенные переменные:103<list type="tag">104105<tag-name id="var_slice_range"><var>$slice_range</var></tag-name>106<tag-desc>107текущий диапазон фрагмента в формате108<link url="https://datatracker.ietf.org/doc/html/rfc7233#section-2.1">HTTP109byte range</link>,110например <literal>bytes=0-1048575</literal>.111</tag-desc>112113</list>114</para>115116</section>117118</module>119120121