Spec-Zone.ru › nginx

Модуль ngx_stream_geo_module

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

Модуль ngx_stream_geo_module (1.11.3) создаёт переменные со значениями, зависящими от 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 { ... }
По умолчанию: —
Контекст: stream

Описывает зависимость значений указанной переменной от IP-адреса клиента. По умолчанию, адрес берётся из переменной $remote_addr, но его можно взять из другой переменной, например:

geo $arg_remote_addr $geo {
    ...;
}
Поскольку переменные вычисляются только при использовании, само существование даже большого количества объявленных переменных «geo» не влечёт дополнительных затрат на обработку соединения.

Если значение переменной не представляет собой корректный IP-адрес, используется адрес «255.255.255.255».

Адреса указываются либо как префиксы в CIDR-нотации (включая отдельные адреса), либо как диапазоны.

Также поддерживаются следующие специальные параметры:

delete
удаляет указанную сеть.
default
значение, устанавливаемое для переменной, если адрес клиента не совпадает ни с одним из указанных адресов. При указании адресов в CIDR-нотации, «0.0.0.0/0» и «::/0» могут быть использованы вместо default. Если default не указан, значение по умолчанию — пустая строка.
include
включает файл с адресами и значениями. Может быть несколько включений.
ranges
указывает, что адреса заданы в виде диапазонов. Этот параметр должен быть первым. Для ускорения загрузки базы геоданных адреса должны быть упорядочены по возрастанию.

Пример:

geo $country {
    default        ZZ;
    include        conf/geo.conf;
    delete         127.0.0.0/16;

    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/stream/ngx_stream_geo_module.html

Spec-Zone.ru

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