geoip2: NGINX GeoIP2-Modul
Installation
Sie können dieses Modul in jeder RHEL-basierten Distribution installieren, einschließlich, aber nicht beschränkt auf:
- RedHat Enterprise Linux 7, 8, 9 und 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 und Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-geoip2
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-geoip2
Aktivieren Sie das Modul, indem Sie Folgendes an den Anfang von /etc/nginx/nginx.conf hinzufügen:
load_module modules/ngx_http_geoip2_module.so;
load_module modules/ngx_stream_geoip2_module.so;
Dieses Dokument beschreibt nginx-module-geoip2 v3.4, veröffentlicht am 22. Juni 2022.
ngx_http_geoip2_module - erstellt Variablen mit Werten aus den MaxMind GeoIP2-Datenbanken basierend auf der Client-IP (Standard) oder aus einer bestimmten Variablen (unterstützt sowohl IPv4 als auch IPv6)
Das Modul unterstützt jetzt NGINX-Streams und kann auf die gleiche Weise verwendet werden, wie das HTTP-Modul verwendet werden kann.
Herunterladen der MaxMind GeoLite2-Datenbank (optional)
Die kostenlosen GeoLite2-Datenbanken sind auf Maxminds Website erhältlich (eine Anmeldung ist erforderlich).
Beispielverwendung:
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;
}
...
}
Metadaten:
Rufen Sie Metadaten zur GeoIP-Datenbank ab.
$variable_name metadata <field>
Autoreload (Standard: deaktiviert):
Die Aktivierung des automatischen Nachladens bewirkt, dass NGINX die Änderungszeit der Datenbank in dem angegebenen Intervall überprüft und sie neu lädt, wenn sie sich geändert hat.
auto_reload <interval>
GeoIP:
$variable_name [default=<value] [source=$variable_with_ip] path ...
Wenn source nicht angegeben ist, wird $remote_addr verwendet, um die Abfrage durchzuführen.
Um den Pfad der gewünschten Daten zu finden (z. B.: country names en), verwenden Sie das mmdblookup-Tool:
$ 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>
Das übersetzt sich zu:
$country_name "default=United States" source=$remote_addr country names en
Zusätzliche Befehle:
Diese Befehle funktionieren genauso wie das ursprüngliche ngx_http_geoip_module, das hier dokumentiert ist: http://nginx.org/en/docs/http/ngx_http_geoip_module.html#geoip_proxy.
Wenn Sie jedoch die Option source=$variable_with_ip für eine Variable angeben, werden diese Einstellungen für diese spezielle Variable ignoriert.
geoip2_proxy < cidr >
geoip2_proxy_recursive < on | off >
GitHub
Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentationen für dieses Modul im GitHub-Repository für nginx-module-geoip2.