Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/ru/docs/stream/ngx_stream_map_module.xml
1 views
1
<?xml version="1.0"?>
2
3
<!--
4
Copyright (C) Igor Sysoev
5
Copyright (C) Nginx, Inc.
6
-->
7
8
<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">
9
10
<module name="Модуль ngx_stream_map_module"
11
link="/ru/docs/stream/ngx_stream_map_module.html"
12
lang="ru"
13
rev="3">
14
15
<section id="summary">
16
17
<para>
18
Модуль <literal>ngx_stream_map_module</literal> (1.11.2) создаёт переменные,
19
значения которых зависят от значений других переменных.
20
</para>
21
22
</section>
23
24
25
<section id="example" name="Пример конфигурации">
26
27
<para>
28
<example>
29
map $remote_addr $limit {
30
127.0.0.1 "";
31
default $binary_remote_addr;
32
}
33
34
limit_conn_zone $limit zone=addr:10m;
35
limit_conn addr 1;
36
</example>
37
</para>
38
39
</section>
40
41
42
<section id="directives" name="Директивы">
43
44
<directive name="map">
45
<syntax block="yes">
46
<value>строка</value>
47
<value>$переменная</value></syntax>
48
<default/>
49
<context>stream</context>
50
51
<para>
52
Создаёт новую переменную, значение которой
53
зависит от значений одной или более исходных переменных,
54
указанных в первом параметре.
55
</para>
56
57
<para>
58
<note>
59
Поскольку переменные вычисляются только в момент использования,
60
само по себе наличие даже большого числа объявлений переменных
61
<literal>map</literal>” не влечёт за собой никаких дополнительных
62
расходов на обработку соединений.
63
</note>
64
</para>
65
66
<para>
67
Параметры внутри блока <literal>map</literal> задают соответствие
68
между исходными и результирующими значениями.
69
</para>
70
71
<para>
72
Исходные значения задаются строками или регулярными выражениями.
73
</para>
74
75
<para>
76
Строки проверяются без учёта регистра.
77
</para>
78
79
<para>
80
Перед регулярным выражением ставится символ “<literal>~</literal>”,
81
если при сравнении следует учитывать регистр символов, либо символы
82
<literal>~*</literal>”, если регистр символов учитывать не нужно.
83
Регулярное выражение может содержать именованные и позиционные выделения,
84
которые могут затем использоваться в других директивах совместно с
85
результирующей переменной.
86
</para>
87
88
<para>
89
Если исходное значение совпадает с именем одного из специальных параметров,
90
описанных ниже, перед ним следует поставить символ “<literal>\</literal>”.
91
</para>
92
93
<para>
94
В качестве результирующего значения можно указать текст,
95
переменную и их комбинации.
96
</para>
97
98
<para>
99
Также поддерживаются следующие специальные параметры:
100
<list type="tag">
101
<tag-name><literal>default</literal> <value>значение</value></tag-name>
102
<tag-desc>
103
задаёт результирующее значение, если исходное значение не
104
совпадает ни с одним из перечисленных.
105
Если параметр <literal>default</literal> не указан, результирующим значением
106
по умолчанию будет пустая строка.
107
</tag-desc>
108
109
<tag-name><literal>hostnames</literal></tag-name>
110
<tag-desc>
111
указывает, что в качестве исходных значений можно
112
использовать маску для первой или последней части имени хоста, например,
113
<example>
114
*.example.com 1;
115
example.* 1;
116
</example>
117
Вместо двух записей
118
<example>
119
example.com 1;
120
*.example.com 1;
121
</example>
122
можно использовать одну:
123
<example>
124
.example.com 1;
125
</example>
126
Этот параметр следует указывать перед списком значений.
127
</tag-desc>
128
129
<tag-name><literal>include</literal> <value>файл</value></tag-name>
130
<tag-desc>
131
включает файл со значениями.
132
Включений может быть несколько.
133
</tag-desc>
134
135
<tag-name id="volatile"><literal>volatile</literal></tag-name>
136
<tag-desc>
137
указывает, что переменная не кэшируется (1.11.7).
138
</tag-desc>
139
140
</list>
141
</para>
142
143
<para>
144
Поиск производится в следующем порядке приоритета
145
и прекращается на первом подходящем варианте:
146
<list type="enum">
147
148
<listitem>
149
строковое значение без маски
150
</listitem>
151
152
<listitem>
153
самое длинное строковое значение с маской в начале,
154
например “<literal>*.example.com</literal>
155
</listitem>
156
157
<listitem>
158
самое длинное строковое значение с маской в конце,
159
например “<literal>mail.*</literal>
160
</listitem>
161
162
<listitem>
163
первое подходящее регулярное выражение
164
(в порядке следования в конфигурационном файле)
165
</listitem>
166
167
<listitem>
168
значение по умолчанию (<literal>default</literal>)
169
</listitem>
170
171
</list>
172
</para>
173
174
</directive>
175
176
177
<directive name="map_hash_bucket_size">
178
<syntax><value>размер</value></syntax>
179
<default>32|64|128</default>
180
<context>stream</context>
181
182
<para>
183
Задаёт размер корзины в хэш-таблицах для переменных <link id="map"/>.
184
Значение по умолчанию зависит от размера строки кэша процессора.
185
Подробнее настройка хэш-таблиц обсуждается в отдельном
186
<link doc="../hash.xml">документе</link>.
187
</para>
188
189
</directive>
190
191
192
<directive name="map_hash_max_size">
193
<syntax><value>размер</value></syntax>
194
<default>2048</default>
195
<context>stream</context>
196
197
<para>
198
Задаёт максимальный размер хэш-таблиц для переменных <link id="map"/>.
199
Подробнее настройка хэш-таблиц обсуждается в отдельном
200
<link doc="../hash.xml">документе</link>.
201
</para>
202
203
</directive>
204
205
</section>
206
207
</module>
208
209