Traffic-Filterung in Nginx mit GeoIP
Schritt-für-Schritt-Anleitung zur länderbasierten Zugriffsbeschränkung auf Ihre Website mithilfe des GeoIP-Moduls in Nginx.
Bei der Arbeit mit Nginx auf einem VPS oder dedizierten Server kann es erforderlich sein, den Zugriff auf eine Website nach Ländern zu beschränken. Dies lässt sich mit dem Nginx-Modul GeoIP umsetzen.
Pakete installieren
Um das GeoIP-Modul auf Ihrem Server zu installieren, führen Sie die folgenden Befehle abhängig von Ihrem Betriebssystem aus.
Debian/Ubuntu
sudo apt-get install nginx-module-geoip
CentOS
yum install nginx-module-geoip
Wenn Ihre Nginx-Version kein /etc/nginx/modules-enabled enthält, wird das Modul möglicherweise nicht automatisch geladen.
Fügen Sie in diesem Fall die folgenden Zeilen ganz am Anfang von /etc/nginx/nginx.conf ein (außerhalb der Blöcke http, server und events):
load_module modules/ngx_http_geoip_module.so;
load_module modules/ngx_stream_geoip_module.so;
Führen Sie anschließend aus:
nginx -s reload
GeoIP-Datenbank aktualisieren
Um die GeoIP-Datenbank zu aktualisieren, führen Sie die folgenden Befehle aus:
mv /usr/share/GeoIP/GeoIP.dat /usr/share/GeoIP/GeoIP.dat_bak
cd /usr/share/GeoIP/
wget http://geolite.maxmind.com/download/geoip/database/GeoLiteCountry/GeoIP.dat.gz
gunzip GeoIP.dat.gz
Nginx-Build mit GeoIP-Modulunterstützung prüfen
Stellen Sie nach der Aktualisierung der GeoIP-Datenbank sicher, dass Nginx mit der Option --with-http_geoip_module kompiliert wurde. Verwenden Sie dazu den folgenden Befehl:
nginx -V
Wurde Nginx nicht mit der erforderlichen Option kompiliert, müssen Sie die Nginx-Modulkompilierung durchführen.
Unsere Produkte und Dienste
Nginx für die länderspezifische Zugriffsbeschränkung konfigurieren
Erstellen Sie im Verzeichnis mit den Nginx-Konfigurationsdateien eine Datei namens block.map.include mit folgendem Inhalt:
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allowed_country {
default yes;
CN no;
VN no;
TW no;
}
In diesem Beispiel wird der Zugriff auf die Website für Nutzer aus China, Vietnam und Taiwan gesperrt.
Um den Zugriff ausschließlich für Nutzer aus bestimmten Ländern zu erlauben, passen Sie die Konfiguration wie folgt an:
geoip_country /usr/share/GeoIP/GeoIP.dat;
map $geoip_country_code $allowed_country {
default no;
RU yes;
UA yes;
}
In diesem Beispiel ist die Website nur für Nutzer aus Russland und der Ukraine zugänglich.
Nginx-Konfiguration anpassen
Fügen Sie in der Datei /etc/nginx/nginx.conf im Abschnitt http die folgende Zeile hinzu:
include include/block.map.include;
Fügen Sie dann im Abschnitt server Ihrer Host-Konfiguration den folgenden Block hinzu:
if ($allowed_country = no) {
return 404;
}
Übernehmen Sie die Änderungen durch einen Neustart von Nginx:
nginx -s reload
Achtung
MaxMind unterstützt das alte Datenbankformat .dat nicht mehr und hat die Möglichkeit zum freien Download eingestellt. Der Zugriff auf die Dateien ist nun nur noch nach Anmeldung und dem Erwerb einer Lizenz möglich. Aktuell wird das neue Datenbankformat .mmdb verwendet.
Hilfe
Bei Fragen oder wenn Sie Unterstützung brauchen, erreichen Sie uns jederzeit über das Ticketsystem — wir helfen Ihnen gern weiter!