Path: blob/main/xml/ru/docs/stream/ngx_stream_geo_module.xml
1 views
<?xml version="1.0"?>12<!--3Copyright (C) Nginx, Inc.4-->56<!DOCTYPE module SYSTEM "../../../../dtd/module.dtd">78<module name="Модуль ngx_stream_geo_module"9link="/ru/docs/stream/ngx_stream_geo_module.html"10lang="ru"11rev="2">1213<section id="summary">1415<para>16Модуль <literal>ngx_stream_geo_module</literal> (1.11.3) создаёт переменные,17значения которых зависят от IP-адреса клиента.18</para>1920</section>212223<section id="example" name="Пример конфигурации">2425<para>26<example>27geo $geo {28default 0;2930127.0.0.1 2;31192.168.1.0/24 1;3210.1.0.0/16 1;3334::1 2;352001:0db8::/32 1;36}37</example>38</para>3940</section>414243<section id="directives" name="Директивы">4445<directive name="geo">46<syntax block="yes">[<value>$адрес</value>] <value>$переменная</value></syntax>47<default/>48<context>stream</context>4950<para>51Описывает для указанной переменной зависимость значения от52IP-адреса клиента.53По умолчанию адрес берётся из переменной <var>$remote_addr</var>,54но его также можно получить из другой переменной, например:55<example>56geo $arg_remote_addr $geo {57...;58}59</example>60</para>6162<para>63<note>64Поскольку переменные вычисляются только в момент использования,65само по себе наличие даже большого числа объявлений переменных66“<literal>geo</literal>” не влечёт за собой никаких дополнительных67расходов на обработку соединений.68</note>69</para>7071<para>72Если значение переменной не представляет из себя правильный IP-адрес,73то используется адрес “<literal>255.255.255.255</literal>”.74</para>7576<para>77Адреса задаются либо префиксами в формате CIDR78(включая одиночные адреса), либо в виде диапазонов.79</para>8081<para>82Также поддерживаются следующие специальные параметры:83<list type="tag">8485<tag-name><literal>delete</literal></tag-name>86<tag-desc>87удаляет описанную сеть.88</tag-desc>8990<tag-name><literal>default</literal></tag-name>91<tag-desc>92значение переменной, если адрес клиента не соответствует93ни одному из заданных адресов.94При задании адресов в формате CIDR95вместо <literal>default</literal> можно использовать96“<literal>0.0.0.0/0</literal>” и “<literal>::/0</literal>”.97Если параметр <literal>default</literal> не указан, значением98по умолчанию будет пустая строка.99</tag-desc>100101<tag-name><literal>include</literal></tag-name>102<tag-desc>103включает файл с адресами и значениями.104Включений может быть несколько.105</tag-desc>106107<tag-name><literal>ranges</literal></tag-name>108<tag-desc>109указывает, что адреса задаются в виде диапазонов.110Этот параметр должен быть первым.111Для ускорения загрузки гео-базы нужно располагать адреса в порядке возрастания.112</tag-desc>113114<tag-name id="volatile"><literal>volatile</literal></tag-name>115<tag-desc>116указывает, что переменная не кэшируется (1.29.3).117</tag-desc>118119</list>120</para>121122<para>123Пример:124<example>125geo $country {126default ZZ;127include conf/geo.conf;128delete 127.0.0.0/16;129130127.0.0.0/24 US;131127.0.0.1/32 RU;13210.1.0.0/16 RU;133192.168.1.0/24 UK;134}135</example>136</para>137138<para>139В файле <path>conf/geo.conf</path> могут быть такие строки:140<example>14110.2.0.0/16 RU;142192.168.2.0/24 RU;143</example>144</para>145146<para>147В качестве значения выбирается максимальное совпадение, например,148для адреса 127.0.0.1 будет выбрано значение “<literal>RU</literal>”,149а не “<literal>US</literal>”.150</para>151152<para>153Пример описания диапазонов:154<example>155geo $country {156ranges;157default ZZ;158127.0.0.0-127.0.0.0 US;159127.0.0.1-127.0.0.1 RU;160127.0.0.2-127.0.0.255 US;16110.1.0.0-10.1.255.255 RU;162192.168.1.0-192.168.1.255 UK;163}164</example>165</para>166167</directive>168169</section>170171</module>172173174