Book a Demo!
CoCalc Logo Icon
StoreFeaturesDocsShareSupportNewsAboutPoliciesSign UpSign In
nginx
GitHub Repository: nginx/nginx.org
Path: blob/main/xml/ru/docs/stream/ngx_stream_geo_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_stream_geo_module"
10
link="/ru/docs/stream/ngx_stream_geo_module.html"
11
lang="ru"
12
rev="2">
13
14
<section id="summary">
15
16
<para>
17
Модуль <literal>ngx_stream_geo_module</literal> (1.11.3) создаёт переменные,
18
значения которых зависят от IP-адреса клиента.
19
</para>
20
21
</section>
22
23
24
<section id="example" name="Пример конфигурации">
25
26
<para>
27
<example>
28
geo $geo {
29
default 0;
30
31
127.0.0.1 2;
32
192.168.1.0/24 1;
33
10.1.0.0/16 1;
34
35
::1 2;
36
2001:0db8::/32 1;
37
}
38
</example>
39
</para>
40
41
</section>
42
43
44
<section id="directives" name="Директивы">
45
46
<directive name="geo">
47
<syntax block="yes">[<value>$адрес</value>] <value>$переменная</value></syntax>
48
<default/>
49
<context>stream</context>
50
51
<para>
52
Описывает для указанной переменной зависимость значения от
53
IP-адреса клиента.
54
По умолчанию адрес берётся из переменной <var>$remote_addr</var>,
55
но его также можно получить из другой переменной, например:
56
<example>
57
geo $arg_remote_addr $geo {
58
...;
59
}
60
</example>
61
</para>
62
63
<para>
64
<note>
65
Поскольку переменные вычисляются только в момент использования,
66
само по себе наличие даже большого числа объявлений переменных
67
<literal>geo</literal>” не влечёт за собой никаких дополнительных
68
расходов на обработку соединений.
69
</note>
70
</para>
71
72
<para>
73
Если значение переменной не представляет из себя правильный IP-адрес,
74
то используется адрес “<literal>255.255.255.255</literal>”.
75
</para>
76
77
<para>
78
Адреса задаются либо префиксами в формате CIDR
79
(включая одиночные адреса), либо в виде диапазонов.
80
</para>
81
82
<para>
83
Также поддерживаются следующие специальные параметры:
84
<list type="tag">
85
86
<tag-name><literal>delete</literal></tag-name>
87
<tag-desc>
88
удаляет описанную сеть.
89
</tag-desc>
90
91
<tag-name><literal>default</literal></tag-name>
92
<tag-desc>
93
значение переменной, если адрес клиента не соответствует
94
ни одному из заданных адресов.
95
При задании адресов в формате CIDR
96
вместо <literal>default</literal> можно использовать
97
<literal>0.0.0.0/0</literal>” и “<literal>::/0</literal>”.
98
Если параметр <literal>default</literal> не указан, значением
99
по умолчанию будет пустая строка.
100
</tag-desc>
101
102
<tag-name><literal>include</literal></tag-name>
103
<tag-desc>
104
включает файл с адресами и значениями.
105
Включений может быть несколько.
106
</tag-desc>
107
108
<tag-name><literal>ranges</literal></tag-name>
109
<tag-desc>
110
указывает, что адреса задаются в виде диапазонов.
111
Этот параметр должен быть первым.
112
Для ускорения загрузки гео-базы нужно располагать адреса в порядке возрастания.
113
</tag-desc>
114
115
<tag-name id="volatile"><literal>volatile</literal></tag-name>
116
<tag-desc>
117
указывает, что переменная не кэшируется (1.29.3).
118
</tag-desc>
119
120
</list>
121
</para>
122
123
<para>
124
Пример:
125
<example>
126
geo $country {
127
default ZZ;
128
include conf/geo.conf;
129
delete 127.0.0.0/16;
130
131
127.0.0.0/24 US;
132
127.0.0.1/32 RU;
133
10.1.0.0/16 RU;
134
192.168.1.0/24 UK;
135
}
136
</example>
137
</para>
138
139
<para>
140
В файле <path>conf/geo.conf</path> могут быть такие строки:
141
<example>
142
10.2.0.0/16 RU;
143
192.168.2.0/24 RU;
144
</example>
145
</para>
146
147
<para>
148
В качестве значения выбирается максимальное совпадение, например,
149
для адреса 127.0.0.1 будет выбрано значение “<literal>RU</literal>”,
150
а не “<literal>US</literal>”.
151
</para>
152
153
<para>
154
Пример описания диапазонов:
155
<example>
156
geo $country {
157
ranges;
158
default ZZ;
159
127.0.0.0-127.0.0.0 US;
160
127.0.0.1-127.0.0.1 RU;
161
127.0.0.2-127.0.0.255 US;
162
10.1.0.0-10.1.255.255 RU;
163
192.168.1.0-192.168.1.255 UK;
164
}
165
</example>
166
</para>
167
168
</directive>
169
170
</section>
171
172
</module>
173
174