geoip2: Модуль GeoIP2 для NGINX
Установка для Debian/Ubuntu
Эти документы применимы к пакету APT nginx-module-geoip2, предоставляемому репозиторием GetPageSpeed Extras.
- Настройте репозиторий APT, как описано в настройке APT репозитория.
- Установите модуль:
sudo apt-get update
sudo apt-get install nginx-module-geoip2
Показать версии и архитектуры
| Дистрибутив | Версия | Компонент | Архитектуры |
|-------------|--------------------|-------------|------------------|
| debian | bookworm | main | amd64, arm64 |
| debian | bookworm-mainline | main | amd64, arm64 |
| debian | trixie | main | amd64, arm64 |
| debian | trixie-mainline | main | amd64, arm64 |
| ubuntu | focal | main | amd64, arm64 |
| ubuntu | focal-mainline | main | amd64, arm64 |
| ubuntu | jammy | main | amd64, arm64 |
| ubuntu | jammy-mainline | main | amd64, arm64 |
| ubuntu | noble | main | amd64, arm64 |
| ubuntu | noble-mainline | main | amd64, arm64 |
ngx_http_geoip2_module - создает переменные со значениями из баз данных maxmind geoip2, основанными на IP клиента (по умолчанию) или из конкретной переменной (поддерживает как IPv4, так и IPv6).
Теперь модуль поддерживает потоки nginx и может использоваться таким же образом, как и http модуль.
Загрузка базы данных Maxmind GeoLite2 (по желанию)
Бесплатные базы данных GeoLite2 доступны на сайте Maxmind (требуется регистрация).
Пример использования:
http {
...
geoip2 /etc/maxmind-country.mmdb {
auto_reload 5m;
$geoip2_metadata_country_build metadata build_epoch;
$geoip2_data_country_code default=US source=$variable_with_ip country iso_code;
$geoip2_data_country_name country names en;
}
geoip2 /etc/maxmind-city.mmdb {
$geoip2_data_city_name default=London city names en;
}
....
fastcgi_param COUNTRY_CODE $geoip2_data_country_code;
fastcgi_param COUNTRY_NAME $geoip2_data_country_name;
fastcgi_param CITY_NAME $geoip2_data_city_name;
....
}
stream {
...
geoip2 /etc/maxmind-country.mmdb {
$geoip2_data_country_code default=US source=$remote_addr country iso_code;
}
...
}
Метаданные:
Получите метаданные о базе данных geoip.
$variable_name metadata <field>
Автоперезагрузка (по умолчанию: отключена):
Включение автоперезагрузки заставит nginx проверять время изменения базы данных через указанные интервалы и перезагружать ее, если она изменилась.
auto_reload <interval>
GeoIP:
$variable_name [default=<value] [source=$variable_with_ip] path ...
Если источник не указан, будет использоваться $remote_addr для выполнения поиска.
Чтобы найти путь к нужным данным (например: country names en), используйте инструмент mmdblookup:
$ mmdblookup --file /usr/share/GeoIP/GeoIP2-Country.mmdb --ip 8.8.8.8
{
"country":
{
"geoname_id":
6252001 <uint32>
"iso_code":
"US" <utf8_string>
"names":
{
"de":
"USA" <utf8_string>
"en":
"United States" <utf8_string>
}
}
}
$ mmdblookup --file /usr/share/GeoIP/GeoIP2-Country.mmdb --ip 8.8.8.8 country names en
"United States" <utf8_string>
Это переводится как:
$country_name "default=United States" source=$remote_addr country names en
Дополнительные команды:
Эти команды работают так же, как и оригинальный ngx_http_geoip_module, описанный здесь: http://nginx.org/en/docs/http/ngx_http_geoip_module.html#geoip_proxy.
Однако, если вы предоставите опцию source=$variable_with_ip для переменной, эти настройки будут игнорироваться для конкретной переменной.
geoip2_proxy < cidr >
geoip2_proxy_recursive < on | off >