Entrada

GeoIP Nginx

Este módulo de nginx nos permite usar una base de datos de MaxMind para geolocalizar IPs. Las posibilidades son muchas, desde usarlo con Logstash, servirlo como un programa propio hecho en Python,Bash o similares y enviarlo por ejemplo a una base de datos como InfluxDB y/o acabar recopilando la información en registro junto con el mapa mundi y hacer nuestros dashboards basado en la GeoLolización.

Este módulo de Nginx necesita de libnginx-mod-http-geoip2 - GeoIP2 HTTP module for Nginx

Añadir a /etc/nginx/nginx.conf

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
http {
        geoip2  /etc/nginx/geoip/GeoLite2-City.mmdb {
            auto_reload 5m;
            $geoip2_data_country_code country iso_code;
            $geoip2_data_country_name country names en;
            $geoip2_data_city_name city names en;
            $geoip2_data_latitude location latitude;
            $geoip2_data_longitude location longitude;
        }

        log_format geo '$remote_addr - $remote_user [$time_local] '
        '"$request" $status $body_bytes_sent '
        '"$http_referer" "$http_user_agent" '
        '$geoip2_data_country_code $geoip2_data_country_name $geoip2_data_city_name '
        '$geoip2_data_latitude $geoip2_data_longitude';

        access_log /var/log/nginx/access_geo.log geo;

Los los logs de nginx que hemos configurado access_geo.log deberían mostrar información como la geolocalización, ciudad y país de origen del acceso:

1
2
192.42.116.211 - - [12/Mar/2025:23:28:11 +0100] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0" NL The Netherlands - 52.38240 4.89950
193.189.100.194 - - [12/Mar/2025:23:28:13 +0100] "GET / HTTP/1.1" 200 409 "-" "Mozilla/5.0 (X11; Linux x86_64; rv:128.0) Gecko/20100101 Firefox/128.0" SE Sweden - 59.32470 18.05600
Esta entrada está licenciada bajo CC BY 4.0 por el autor.