GeoIP2#
El módulo GeoIP2 implementa búsquedas en bases de datos MaxMind GeoIP2 por la dirección IP del cliente (por defecto) o por el valor de una variable específica. Soporta tanto IPv4 como IPv6. Para instalar el módulo, utiliza uno de los siguientes paquetes: Angie: Angie PRO: Para trabajar con el módulo, es necesario cargarlo en el contexto de En el ejemplo de configuración a continuación, además de las directivas del módulo en sí, también se utilizan las directivas del módulo echo: La documentación detallada y el código fuente están disponibles en:
leev/ngx_http_geoip2_moduleInstalación#
angie-module-geoip2
angie-pro-module-geoip2
Carga del Módulo#
main{}
:load_module modules/ngx_http_geoip2_module.so; # para usar en el bloque http{}
load_module modules/ngx_stream_geoip2_module.so; # para usar en el contexto stream{}
load_module modules/ngx_http_echo_module.so;
Ejemplo de Configuración#
http {
geoip2 /var/lib/GeoIP/GeoLite2-Country.mmdb {
auto_reload 1h;
$geoip2_country_code default=RU source=$http_x_forwarded_for country iso_code;
$geoip2_country_name source=$http_x_forwarded_for country names ru;
}
log_format with_geoip '$server_port $remote_addr - $remote_user [$time_local] "$request" '
'$status $body_bytes_sent "$http_referer" '
'"$http_user_agent" "$http_x_forwarded_for" "$http_host" '
'country="$geoip2_country_code"';
map $geoip2_country_code $denied {
PL "1";
QA "1";
}
server {
listen 80;
root /usr/share/angie/html;
index index.html index.htm;
access_log /var/log/angie/geoip_access.log with_geoip;
if ($denied) {
return 403;
}
location / {
echo "ip = $http_x_forwarded_for";
echo "code = $geoip2_country_code";
echo "name = $geoip2_country_name";
}
}
}
Ejemplos de Ejecución de Solicitudes#
$ curl -H'X-Forwarded-For: 51.68.138.153' http://127.0.0.1
<html>
<head><title>403 Forbidden</title></head>
<body>
<center><h1>403 Forbidden</h1></center>
<hr><center>Angie/1.10.2</center>
</body>
</html>
$ curl -H'X-Forwarded-For: 8.8.8.8' http://127.0.0.1
ip = 8.8.8.8
code = US
name = United States
$ curl -H'X-Forwarded-For: 77.88.44.242' http://127.0.0.1
ip = 77.88.44.242
code = RU
name = Russia
Información Adicional#