geoip2: Módulo GeoIP2 de NGINX
Instalación
Puedes instalar este módulo en cualquier distribución basada en RHEL, incluyendo, pero no limitado a:
- RedHat Enterprise Linux 7, 8, 9 y 10
- CentOS 7, 8, 9
- AlmaLinux 8, 9
- Rocky Linux 8, 9
- Amazon Linux 2 y 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
Habilita el módulo añadiendo lo siguiente en la parte superior de /etc/nginx/nginx.conf:
load_module modules/ngx_http_geoip2_module.so;
load_module modules/ngx_stream_geoip2_module.so;
Este documento describe nginx-module-geoip2 v3.4 lanzado el 22 de junio de 2022.
ngx_http_geoip2_module - crea variables con valores de las bases de datos maxmind geoip2 basados en la IP del cliente (por defecto) o de una variable específica (soporta tanto IPv4 como IPv6)
El módulo ahora soporta flujos de nginx y puede ser utilizado de la misma manera que se puede usar el módulo http.
Descargar la base de datos Maxmind GeoLite2 (opcional)
Las bases de datos GeoLite2 gratuitas están disponibles en el sitio web de Maxmind (requiere registro)
Ejemplo de uso:
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;
}
...
}
Metadatos:
Recupera metadatos sobre la base de datos geoip.
$variable_name metadata <field>
Autorreload (por defecto: deshabilitado):
Habilitar la recarga automática hará que nginx verifique el tiempo de modificación de la base de datos en el intervalo especificado y la recargue si ha cambiado.
auto_reload <interval>
GeoIP:
$variable_name [default=<value] [source=$variable_with_ip] path ...
Si no se especifica una fuente, se utilizará $remote_addr para realizar la búsqueda.
Para encontrar la ruta de los datos que deseas (por ejemplo: country names en), utiliza la herramienta 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>
Esto se traduce a:
$country_name "default=United States" source=$remote_addr country names en
Comandos adicionales:
Estos comandos funcionan de la misma manera que el original ngx_http_geoip_module documentado aquí: http://nginx.org/en/docs/http/ngx_http_geoip_module.html#geoip_proxy.
Sin embargo, si proporcionas la opción source=$variable_with_ip en una variable, estas configuraciones serán ignoradas para esa variable en particular.
geoip2_proxy < cidr >
geoip2_proxy_recursive < on | off >
GitHub
Puedes encontrar consejos de configuración adicionales y documentación para este módulo en el repositorio de GitHub para nginx-module-geoip2.