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