Модуль ngx_stream_geoip_module

Пример конфигурации
Директивы
     geoip_country
     geoip_city
     geoip_org
     geoip_set

Модуль ngx_stream_geoip_module (1.11.3) создаёт переменные, значения которых зависят от IP-адреса клиента, используя готовые базы данных MaxMind.

Модуль поддерживает как базы данных GeoIP в старом формате, так и новые базы данных GeoIP2 в формате MaxMind DB (MMDB) (1.29.4).

При использовании баз данных в старом формате с поддержкой IPv6 IPv4-адреса ищутся отображёнными на IPv6.

По умолчанию этот модуль не собирается, его сборку необходимо разрешить с помощью конфигурационного параметра --with-stream_geoip_module.

Для сборки и работы этого модуля требуются библиотеки: MaxMind GeoIP для работы с базами данных в старом формате и libmaxminddb для работы с базами данных в формате MaxMind DB (MMDB) (1.29.4).

Пример конфигурации

stream {
    geoip_country         GeoIP.dat;
    geoip_city            GeoLiteCity.dat;

    map $geoip_city_continent_code $nearest_server {
        default        example.com;
        EU          eu.example.com;
        NA          na.example.com;
        AS          as.example.com;
    }
    ...
}

Директивы

Синтаксис: geoip_country файл;
Умолчание:
Контекст: stream

Задаёт базу данных для определения страны в зависимости от значения IP-адреса клиента. При использовании этой базы данных доступны следующие переменные:

$geoip_country_code
двухбуквенный код страны, например, “RU”, “US”.
$geoip_country_code3
трёхбуквенный код страны, например, “RUS”, “USA”.
Эта переменная недоступна при использовании баз данных в формате MMDB.
$geoip_country_name
название страны, например, “Russian Federation”, “United States”.

Синтаксис: geoip_city файл;
Умолчание:
Контекст: stream

Задаёт базу данных для определения страны, региона и города в зависимости от значения IP-адреса клиента. При использовании этой базы данных доступны следующие переменные:

$geoip_area_code
телефонный код области (только для США).
Данная переменная может содержать неактуальную информацию, т.к. соответствующее поле базы данных объявлено устаревшим.
$geoip_city_continent_code
двухбуквенный код континента, например, “EU”, “NA”.
$geoip_city_country_code
двухбуквенный код страны, например, “RU”, “US”.
$geoip_city_country_code3
трёхбуквенный код страны, например, “RUS”, “USA”.
Эта переменная недоступна при использовании баз данных в формате MMDB.
$geoip_city_country_name
название страны, например, “Russian Federation”, “United States”.
$geoip_dma_code
DMA-код региона в США (также известный как “код агломерации”), согласно геотаргетингу Google AdWords API.
$geoip_latitude
широта.
$geoip_longitude
долгота.
$geoip_region
код региона страны (область, край, штат, провинция, федеральная земля и тому подобное), например, “48”, “DC”.
$geoip_region_name
название региона страны (область, край, штат, провинция, федеральная земля и тому подобное), например, “Moscow City”, “District of Columbia”.
$geoip_city
название города, например, “Moscow”, “Washington”.
$geoip_postal_code
почтовый индекс.

Синтаксис: geoip_org файл;
Умолчание:
Контекст: stream

Задаёт базу данных для определения названия организации в зависимости от значения IP-адреса клиента. При использовании этой базы данных доступна следующая переменная:

$geoip_org
название организации, например, “The University of Melbourne”.

Синтаксис: geoip_set $переменная файл путь;
Умолчание:
Контекст: http

Эта директива появилась в версии 1.29.4.

Создаёт переменную, значение которой будет определяться из базы данных в файле по указанному пути к данным, например:

geoip_set $country GeoLite2-Country.mmdb country.names.en;
geoip_set $region  GeoLite2-City.mmdb    subdivisions.0.iso_code;
geoip_set $asn     GeoLite2-ASN.mmdb     autonomous_system_number;

Эта директива поддерживает только базы данных в формате MMDB.