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

WebhostingLäuft auf ultraschnellen NVMe-Laufwerken. Geeignet für Websites jeder Komplexität.
Bestellen
VPSFlexible Cloud-Infrastruktur mit vollem Root-Zugriff.
Bestellen
Dedizierte ServerBare-Metal-Server für maximale Leistung.
Bestellen

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!

Hilfe benötigt?Unsere Ingenieure helfen Ihnen kostenlos bei jeder Frage in wenigen MinutenKontaktieren Sie uns