Модуль ngx_http_geo_module создаёт переменные,
значения которых зависят от IP-адреса клиента.
Пример конфигурации
geo $geo {
default 0;
127.0.0.1 2;
192.168.1.0/24 1;
10.1.0.0/16 1;
::1 2;
2001:0db8::/32 1;
}
Директивы
синтаксис:
|
geo [$адрес ] $переменная { ... }
|
умолчание:
|
—
|
контекст:
|
http
|
Описывает для указанной переменной зависимость значения от
IP-адреса клиента.
По умолчанию адрес берётся из переменной $remote_addr ,
но его также можно получить из другой переменной (0.7.27), например:
geo $arg_remote_addr $geo {
...;
}
Если значение переменной не представляет из себя правильный IP-адрес,
то используется адрес “255.255.255.255 ”.
Адреса задаются либо префиксами в формате CIDR
(включая одиночные адреса), либо в виде диапазонов (0.7.23).
Также поддерживаются следующие специальные параметры:
delete
-
удаляет описанную сеть (0.7.23).
default
-
значение переменной, если адрес клиента не соответствует
ни одному из заданных адресов.
При задании адресов в формате CIDR
вместо
default можно использовать
“0.0.0.0/0 ” и “::/0 ”.
Если параметр default не указан, значением
по умолчанию будет пустая строка.
include
-
включает файл с адресами и значениями.
Включений может быть несколько.
proxy
-
задаёт доверенные адреса (0.8.7, 0.7.63),
при запросе с которых будет использоваться адрес в переданном
поле заголовка запроса “X-Forwarded-For”.
В отличие от обычных адресов, доверенные адреса проверяются
последовательно.
proxy_recursive
-
включает рекурсивный поиск адреса (1.3.0, 1.2.1).
При выключенном рекурсивном поиске вместо исходного адреса клиента,
совпадающего с одним из доверенных адресов, будет использоваться последний
адрес, переданный в “X-Forwarded-For”.
При включённом рекурсивном поиске вместо исходного адреса клиента,
совпадающего с одним из доверенных адресов, будет использоваться последний
не доверенный адрес, переданный в “X-Forwarded-For”.
ranges
-
указывает, что адреса задаются в виде диапазонов (0.7.23).
Этот параметр должен быть первым.
Для ускорения загрузки гео-базы нужно располагать адреса в порядке возрастания.
Пример:
geo $country {
default ZZ;
include conf/geo.conf;
delete 127.0.0.0/16;
proxy 192.168.100.0/24;
proxy 2001:0db8::/32;
127.0.0.0/24 US;
127.0.0.1/32 RU;
10.1.0.0/16 RU;
192.168.1.0/24 UK;
}
В файле conf/geo.conf могут быть такие строки:
10.2.0.0/16 RU;
192.168.2.0/24 RU;
В качестве значения выбирается максимальное совпадение, например,
для адреса 127.0.0.1 будет выбрано значение “RU ”,
а не “US ”.
Пример описания диапазонов:
geo $country {
ranges;
default ZZ;
127.0.0.0-127.0.0.0 US;
127.0.0.1-127.0.0.1 RU;
127.0.0.2-127.0.0.255 US;
10.1.0.0-10.1.255.255 RU;
192.168.1.0-192.168.1.255 UK;
}
|