Konfigurace GeoIP s MaxMind databázemi
Geolokační databáze MaxMind
Pro začátek si musíme založit účet pomocí kterého budeme pravidelně sbírat zdarma dostupné geolokační databáze.
-
Zaregistrovat se na stránkách MadMind a naklikat si LicenseKey pro svůj účet.

💡 Kombinace Account ID a License key bude použita v konfiguraci služby která pravidelně stahuje nejnovější verzi databází.
-
Nainstalovat si
nginx modul geoip, službu pro aktualizaci a nástroj pro hledání v databázi:apt -y update apt -y install libnginx-mod-http-geoip2 geoipupdate mmdb-bin -
Nastavit Account ID a License key v
/etc/GeoIP.conf. Pro databáze zdarma to vypadá např. takto:# GeoIP.conf file for `geoipupdate` program, for versions >= 3.1.1. # Used to update GeoIP databases from https://www.maxmind.com. # For more information about this config file, visit the docs at # https://dev.maxmind.com/geoip/updating-databases. # `AccountID` is from your MaxMind account. AccountID 11254 # `LicenseKey` is from your MaxMind account. LicenseKey g9GJy4_ld2TWaSMQocGd3ghefgS2EVIW542f_ffs # `EditionIDs` is from your MaxMind account. EditionIDs GeoLite2-ASN GeoLite2-City GeoLite2-Country -
Spustit a zkontrolovat aktualizaci databází:
systemctl start geoipupdate.service systemctl status geoipupdate.service
Nginx
Běžně loguji do JSON formátu, rozhodnutí je ale na každém z vás. Formát logu json nastavuji konfiguračním souborem /etc/nginx/conf.d/00-logformat-json.conf:
log_format json escape=none '{"time_iso8601": "$time_iso8601", "ip": "$remote_addr", "domain": "$http_host", "request": "$request", "status": "$status", "user_agent": "$http_user_agent"}';
Nastavení GeoIP a jeho logovacího formátu v JSONu dělám konfigurací v /etc/nginx/conf.d/00-geoipconf.conf
geoip2 /var/lib/GeoIP/GeoLite2-Country.mmdb {
auto_reload 60m;
$geoip2_metadata_country_build metadata build_epoch;
$geoip2_data_country_code country iso_code;
$geoip2_data_country_name country names en;
}
geoip2 /var/lib/GeoIP/GeoLite2-City.mmdb {
auto_reload 60m;
$geoip2_metadata_city_build metadata build_epoch;
$geoip2_data_city_name 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;
log_format geoip escape=none '{"time_iso8601": "$time_iso8601", "ip": "$remote_addr",'
'"domain": "$http_host", "request": "$request",'
'"status": "$status", "user_agent": "$http_user_agent",'
'"country_code": "$geoip2_data_country_code",'
'"country_name": "$geoip2_data_country_name",'
'"city": "$geoip2_data_city_name"}';
Použití je jednoduché. Stačí u site configu nadefinovat, že se má použít formát "geoip":
access_log /var/log/nginx/access.log geoip;
⚠️ Po každé změně provést reload nebo restart serveru:
systemctl reload nginx
No comments to display
No comments to display