Модуль ngx_http_geo_module
Модуль 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 [$address] $variable { ... } |
|---|---|
| По умолчанию: | — |
| Контекст: | http |
Описывает зависимость значений указанной переменной от IP-адреса клиента. По умолчанию, адрес берётся из переменной $remote_addr, но его также можно получить из другой переменной (0.7.27), например:
geo $arg_remote_addr $geo {
...;
}
Поскольку переменные вычисляются только при использовании, простое существование даже большого числа объявленных «geo» переменных не приводит к дополнительным затратам на обработку запроса.
Если значение переменной не представляет собой действительный IP-адрес, используется адрес «255.255.255.255».
Адреса задаются либо как префиксы в CIDR-нотации (включая отдельные адреса), либо как диапазоны (0.7.23).
IPv6-префиксы поддерживаются начиная с версий 1.3.10 и 1.2.7.
Также поддерживаются следующие специальные параметры:
delete- удаляет указанную сеть (0.7.23).
default- значение, устанавливаемое для переменной, если адрес клиента не соответствует ни одному из указанных адресов. При указании адресов в CIDR-нотации, «
0.0.0.0/0» и «::/0» можно использовать вместоdefault. Еслиdefaultне указан, значение по умолчанию будет пустой строкой. include- включает файл с адресами и значениями. Может быть несколько включений.
proxy- определяет доверенные адреса (0.8.7, 0.7.63). При запросе от доверенного адреса используется адрес из поля заголовка запроса «X-Forwarded-For». В отличие от обычных адресов, доверенные адреса проверяются последовательно.
Доверенные IPv6-адреса поддерживаются начиная с версий 1.3.0 и 1.2.1.
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.1-127.0.0.255 US;
10.1.0.0-10.1.255.255 RU;
192.168.1.0-192.168.1.255 UK;
}
© 2002-2021 Igor Sysoev
© 2011-2024 Nginx, Inc.
Licensed under the BSD License.
https://nginx.org/en/docs/http/ngx_http_geo_module.html