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