Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/ru/docs/http/ngx_http_slice_module.xml
1 views
1
<?xml version="1.0"?>
2
3
<!--
4
Copyright (C) Nginx, Inc.
5
-->
6
7
<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
8
9
<module name="Модуль ngx_http_slice_module"
10
link="/ru/docs/http/ngx_http_slice_module.html"
11
lang="ru"
12
rev="4">
13
14
<section id="summary">
15
16
<para>
17
Модуль <literal>ngx_http_slice_module</literal> (1.9.8) — это фильтр,
18
который разбивает запрос на подзапросы,
19
каждый из которых возвращает определённый диапазон ответа.
20
Фильтр обеспечивает более эффективное кэширование больших ответов.
21
</para>
22
23
<para>
24
По умолчанию этот модуль не собирается, его сборку необходимо
25
разрешить с помощью конфигурационного параметра
26
<literal>--with-http_slice_module</literal>.
27
</para>
28
29
</section>
30
31
32
<section id="issues" name="Известные проблемы">
33
34
<para>
35
В настоящий момент модуль не работает как ожидается с подзапросами, например
36
<link doc="ngx_http_proxy_module.xml" id="proxy_cache_background_update">
37
фоновым обновлением кэша</link>.
38
В этом случае построение запроса происходит без указания диапазона байт.
39
</para>
40
41
</section>
42
43
44
<section id="example" name="Пример конфигурации">
45
46
<para>
47
<example>
48
location / {
49
<emphasis>slice</emphasis> 1m;
50
proxy_cache cache;
51
proxy_cache_key $uri$is_args$args<emphasis>$slice_range</emphasis>;
52
proxy_set_header Range <emphasis>$slice_range</emphasis>;
53
proxy_cache_valid 200 206 1h;
54
proxy_pass http://localhost:8000;
55
}
56
</example>
57
В данном примере
58
ответ разбивается на кэшируемые фрагменты размером в 1 мегабайт.
59
</para>
60
</section>
61
62
63
<section id="directives" name="Директивы">
64
65
<directive name="slice">
66
<syntax><value>размер</value></syntax>
67
<default>0</default>
68
<context>http</context>
69
<context>server</context>
70
<context>location</context>
71
72
<para>
73
Задаёт <value>размер</value> фрагмента.
74
Нулевое значение запрещает разбиение ответов на фрагменты.
75
Обратите внимание, что слишком низкое значение может привести
76
к излишнему потреблению памяти
77
и открытию большого количества файлов.
78
</para>
79
80
<para>
81
Для того, чтобы подзапрос вернул необходимый диапазон,
82
переменная <var>$slice_range</var> должна быть
83
<link doc="ngx_http_proxy_module.xml" id="proxy_set_header">передана</link> на
84
проксируемый сервер в качестве поля <literal>Range</literal> заголовка запроса.
85
Если включено
86
<link doc="ngx_http_proxy_module.xml" id="proxy_cache">кэширование</link>,
87
то необходимо добавить <var>$slice_range</var> в
88
<link doc="ngx_http_proxy_module.xml" id="proxy_cache_key">ключ
89
кэширования</link>
90
и <link doc="ngx_http_proxy_module.xml" id="proxy_cache_valid">включить</link>
91
кэширование ответов с кодом 206.
92
</para>
93
94
</directive>
95
96
</section>
97
98
99
<section id="variables" name="Встроенные переменные">
100
101
<para>
102
Модуль <literal>ngx_http_slice_module</literal>
103
поддерживает следующие встроенные переменные:
104
<list type="tag">
105
106
<tag-name id="var_slice_range"><var>$slice_range</var></tag-name>
107
<tag-desc>
108
текущий диапазон фрагмента в формате
109
<link url="https://datatracker.ietf.org/doc/html/rfc7233#section-2.1">HTTP
110
byte range</link>,
111
например <literal>bytes=0-1048575</literal>.
112
</tag-desc>
113
114
</list>
115
</para>
116
117
</section>
118
119
</module>
120
121