Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/cn/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="Module ngx_http_map_module"
11
link="/cn/docs/http/ngx_http_map_module.html"
12
lang="cn"
13
translator="yzprofile"
14
rev="1">
15
16
<section id="summary">
17
18
<para>
19
模块 <literal>ngx_http_map_module</literal> 可以创建一些和另外变量相关联的变量。
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>string</value>
57
<value>$variable</value></syntax>
58
<default/>
59
<context>http</context>
60
61
<para>
62
在配置的参数中,第一个是要创建新的变量,它的值取决于后面一个或多个源变量。
63
<note>
64
在0.9.0版本之前,这里只支持一个变量。
65
</note>
66
</para>
67
68
<para>
69
<literal>map</literal> 块里的参数指定了源变量值和结果值的对应关系。
70
</para>
71
72
<para>
73
源变量值可以使用字符串或者正则表达式 (0.9.6)。
74
</para>
75
76
<para>
77
一个正则表达式如果以 “<literal>~</literal>” 开头,这个正则表达式对大小写敏感;
78
若以 “<literal>~*</literal>”开头 (1.0.4),这个正则表达式对大小写不敏感。
79
且正则表达式里可以包含命名捕获和位置捕获,这些变量可以跟结果变量一起被其它指令使用。
80
</para>
81
82
<para>
83
如果源变量的值正好跟特殊参数同名(看下面),它要以 “<literal>\</literal>” 字符作为前缀。
84
</para>
85
86
<para>
87
结果变量可以是一个字符串也可以是另外一个变量 (0.9.0)。
88
</para>
89
90
<para>
91
这个指令也支持三个特殊参数。
92
<list type="tag">
93
<tag-name><literal>default</literal> <value>value</value></tag-name>
94
<tag-desc>
95
如果源变量值没有匹配到任何变量,则设置一个默认值作为结果。
96
当没有设置 <literal>default</literal>,将会用一个空的字符串作为默认的结果。
97
</tag-desc>
98
99
<tag-name><literal>hostnames</literal></tag-name>
100
<tag-desc>
101
允许用前缀或者后缀掩码指定域名作为源变量值,举个例子,
102
<example>
103
*.example.com 1;
104
example.* 1;
105
</example>
106
这两条记录
107
<example>
108
example.com 1;
109
*.example.com 1;
110
</example>
111
可以被合并为:
112
<example>
113
.example.com 1;
114
</example>
115
这个参数必须写在值映射列表的最前面。
116
</tag-desc>
117
118
<tag-name><literal>include</literal> <value>file</value></tag-name>
119
<tag-desc>
120
包含一个或者多个存有映射值的文件。
121
</tag-desc>
122
123
</list>
124
</para>
125
126
<para>
127
如果源值匹配了多余一个的指定变量,例如掩码和正则同时匹配,那么将会按照下面的顺序进行优先选择:
128
<list type="enum">
129
130
<listitem>
131
没有掩码的字符串
132
</listitem>
133
134
<listitem>
135
最长的带前缀的字符串,例如: “<literal>*.example.com</literal>
136
</listitem>
137
138
<listitem>
139
最长的带后缀的字符串,例如:“<literal>mail.*</literal>
140
</listitem>
141
142
<listitem>
143
按顺序第一个先匹配的正则表达式 (在配置文件中体现的顺序)
144
</listitem>
145
146
<listitem>
147
默认值
148
</listitem>
149
150
</list>
151
</para>
152
153
</directive>
154
155
156
<directive name="map_hash_bucket_size">
157
<syntax><value>size</value></syntax>
158
<default>32|64|128</default>
159
<context>http</context>
160
161
<para>
162
<link id="map"/> 的变量哈稀表设置桶大小。
163
默认值取决于处理器cache line的大小。
164
可以从这里获取到更多参考信息:
165
<link doc="../hash.xml">设置哈稀表</link>.
166
</para>
167
168
</directive>
169
170
171
<directive name="map_hash_max_size">
172
<syntax><value>size</value></syntax>
173
<default>2048</default>
174
<context>http</context>
175
176
<para>
177
设置 <link id="map"/> 变量哈稀表<value>大小</value>的上限。
178
可以从这里获取到更多参考信息:
179
<link doc="../hash.xml">设置哈稀表</link>.
180
</para>
181
182
</directive>
183
184
</section>
185
186
</module>
187
188