Spec-Zone.ru › nginx

Модуль ngx_http_geo_module

  • Пример конфигурации
  • Директивы
  • geo

Модуль 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

Spec-Zone.ru

Настройки Оффлайн Что нового Помощь О нас
Spec-Zone .ru
спецификации, руководства, описания, API