/ Linux

Piwik mit nginx GeoIP-Module nutzen

Für meine Websiten nutze ich gerne Piwik als Statistik-Tool um unter anderen zu sehen, woher meine Besucher eigentlich kommen.
Piwik unterstützt mehrere Varianten der Standort-Erkennung, wobei eigentlich alle besser sind als die Standard-Erkennung.

piwik_geoip-4

Ich selbst nutze, da es die besten Ergebnisse ausgibt, das GeoIP-HTTP-Server-Modul. Dieses erfordert unter nginx zwar die größte Einrichtung, aber auch diese ist schnell erledigt.

Nginx insalliere ich mir direkt aus den Paketquellen der Entwickler. Ich selbst habe die Mainline-Version im Einsatz, es sollte allerdings auch mit der Stable-Version funktionieren.

Damit wir das GeoIP-Modul nutzen können, muss dieses seperat installiert werden, da nginx seit einigen Versionen einzelne Module dynamisch nachladen kann. Je nach System muss also mittels apt oder yum das Paket nginx-module-geoip mit bzw. nachinstalliert werden.

Im nächsten Schritt müssen wir nginx mitteilen, welche GeoIP-Datenbank zukünftig genutzt werden soll. Dazu öffnen wir die /etc/nginx/nginx.conf und ergänzen innerhalb des http-Blocks folgende zwei Zeilen:

geoip_country /etc/nginx/geoip/GeoIP.dat; # the country IP database
geoip_city /etc/nginx/geoip/GeoLiteCity.dat; # the city IP database

Dazu gleich mehr. Öffnet als nächstes die /etc/nginx/fastcgi_params. Ergänzt in dieser folgende Zeilen:

### SET GEOIP Variables ###
fastcgi_param GEOIP_ADDR $remote_addr;
fastcgi_param GEOIP_COUNTRY_CODE $geoip_country_code;
fastcgi_param GEOIP_COUNTRY_NAME $geoip_country_name;
fastcgi_param GEOIP_REGION $geoip_region;
fastcgi_param GEOIP_REGION_NAME $geoip_region_name;
fastcgi_param GEOIP_CITY $geoip_city;
fastcgi_param GEOIP_AREA_CODE $geoip_area_code;
fastcgi_param GEOIP_LATITUDE $geoip_latitude;
fastcgi_param GEOIP_LONGITUDE $geoip_longitude;
fastcgi_param GEOIP_POSTAL_CODE $geoip_postal_code;

Nun, nur noch mittels mkdir /etc/nginx/geoip das oben genannte Verzeichnis erstellen und in dieses wechseln.
Anschließend laden wir die Maxmind-GeoIP-Datenbanken herunter:

wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCity.dat.gz
gunzip GeoLiteCity.dat.gz*

Bei den Datenbanken handelt es sich um die freien, kostenlosen Varianten. Diese unterscheiden sich zu den kommerziellen Versionen um eine nicht ganz so aktuelle Datenbasis. Hier bietet es sich an, regelmäßig mittels einen Cronjobs die aktuellen Versionen herunterzuladen - meines Wissens nach gibt es monatlich eine Aktualisierung.

Zu guter Letzt einfach den nginx neustarten und schon solltet ihr in Piwik die GeoIP-HTTP-Server-Option auswählen können.