Verschwenden Sie keine Serverressourcen: blockieren Sie unerwünschte Bots mit Nginx

Suchmaschinenbots (Crawler) sind spezielle Programme, die Websites im Internet durchsuchen. Suchmaschinen benötigen sie, um Seiten zu finden, zu indizieren und in Suchergebnissen anzuzeigen. Aber nicht alle Bots sind nützlich!
Manchmal wird Ihre Website von unerwünschten Bots besucht, die:
- Daten ohne Ihre Erlaubnis sammeln.
- Serverressourcen verbrauchen und diese verlangsamen.
- Genutzt werden, um nach Schwachstellen zu suchen.
Wenn Sie Ihre Website vor solchen Bots schützen möchten, ist es Zeit, Nginx zu konfigurieren! In diesem Artikel zeigen wir Ihnen, wie Sie sie mit einer speziellen Konfigurationsdatei einfach und schnell blockieren können.
Warum Nginx-Konfiguration statt robots.txt?
Die Datei robots.txt ist ein Werkzeug zur Verwaltung des Verhaltens von Suchmaschinenbots. Sie teilt ihnen mit, welche Teile der Website nicht gecrawlt werden sollen. Es ist sehr einfach, diese Datei zu verwenden: Erstellen Sie einfach eine im Stammverzeichnis der Website, zum Beispiel:
User-agent: BadBot
Disallow: /
Es gibt jedoch ein Problem: Anweisungen in robots.txt sind eher eine Empfehlung als eine erzwingbare Regel. Gewissenhafte Bots folgen den Anweisungen dieser Datei, aber die meisten Bots ignorieren sie einfach.
Im Gegensatz dazu ermöglicht die Konfiguration von Nginx, den Zugriff für unerwünschte Bots physisch zu blockieren, was ein 100% effektives Ergebnis garantiert.
Wie Nginx unerwünschte Bots blockiert: mittels Antwort 444
Im Gegensatz zu robots.txt, das nur Empfehlungen für Bots bereitstellt, blockiert Nginx physisch deren Zugriff. Eine Möglichkeit, dies zu erreichen, ist die Verwendung einer speziellen Serverantwort mit dem Code 444.
In Nginx ist der Antwortcode 444 eine interne Methode, die Verbindung mit dem Client zu beenden, ohne eine Antwort zu senden. Dies ist ein effizienter Ansatz, um unerwünschte Anfragen zu ignorieren und die Serverlast zu minimieren.
Einrichtung des Blockierens
Schritt 1: So identifizieren Sie unerwünschte Bots?
Unerwünschte Bots können durch ihren User-Agent identifiziert werden, ein Parameter, der von allen Clients beim Besuch Ihrer Website gesendet wird. Zum Beispiel könnten einige User-Agents wie folgt aussehen:
AhrefsBot
SemrushBot
MJ12bot
Sie finden verdächtige User-Agent-Werte im Nginx-Zugriffsprotokoll (wenn Ihre Website PHP-FPM verwendet):
sudo grep -i bot /var/log/nginx/access.log
Oder im Apache-Zugriffsprotokoll (wenn Ihre Website das Apache-Modul oder FastCGI als PHP-Handler verwendet):
- Für Ubuntu/Debian:
sudo grep -i bot /var/log/apache2/access.log
- Für CentOS/AlmaLinux/RockyLinux:
sudo grep -i bot /var/log/httpd/access.log
Wenn Sie ein Control Panel wie FASTPANEL verwenden, hat jede Website eine eigene Protokolldatei. Sie können diese einzeln oder alle auf einmal mit einem Befehl analysieren, z. B.:
- Wenn Ihre Website das Apache-Modul oder FastCGI als PHP-Handler verwendet:
sudo cat /var/www/*/data/logs/*-backend.access.log | grep -i bot | tail -500
- Wenn Ihre Website PHP-FPM verwendet:
sudo cat /var/www/*/data/logs/*-frontend.access.log | grep -i bot | tail -500
Dieser Befehl zeigt die letzten 500 Anfragen an alle Ihre Websites an, bei denen der User-Agent-Parameter das Wort „bot“ enthält. Ein Beispiel einer Zeile (eine Anfrage an Ihre Website) könnte so aussehen:
IP - [03/Nov/2022:10:25:52 +0300] "GET link HTTP/1.0" 301 811 "-" "Mozilla/5.0 (compatible; DotBot/1.2; +https://opensiteexplorer.org/dotbot; [email protected])"
oder
IP - [24/Oct/2022:17:32:37 +0300] "GET link HTTP/1.0" 404 469 "-" "Mozilla/5.0 (compatible; BLEXBot/1.0; +http://webmeup-crawler.com/)"
Der User-Agent des Bots befindet sich zwischen den Segmenten „compatible;“ und „/version.number“ am Ende der Request-Zeile in Klammern. In den obigen Beispielen sind die User-Agents also: BLEXBot und DotBot.
Analysieren Sie die gesammelten Informationen und notieren Sie die User-Agent-Strings der aktivsten Bots für den nächsten Schritt der Konfiguration des Blocks.
Schritt 2: Erstellen Sie eine Datei zum Blockieren von Bots
- Verbinden Sie sich über SSH mit Ihrem Server.
- Stellen Sie sicher, dass Ihre aktuelle Nginx-Konfiguration keine Fehler aufweist, bevor Sie Änderungen vornehmen:
nginx -t
Wenn alles in Ordnung ist, sehen Sie:
nginx: die Konfigurationsdatei /etc/nginx/nginx.conf Syntax ist in Ordnung
nginx: Konfigurationsdatei /etc/nginx/nginx.conf Test erfolgreich
Wenn Fehler auftreten, überprüfen Sie diese und beheben Sie sie in der von den Fehlermeldungen angegebenen Datei.
- Erstellen Sie eine separate Datei, die die zu blockierenden Bots auflistet:
sudo nano /etc/nginx/conf.d/block_bots.conf
Fügen Sie den folgenden Code in die Datei ein:
map $http_user_agent $block_bot {
default 0;
~*AhrefsBot 1;
~*SemrushBot 1;
~*MJ12bot 1;
}
server {
if ($block_bot) {
return 444;
}
}
Hier erstellen wir eine Zuordnung, die bestimmt, welche Bots blockiert werden sollen.
Listen Sie in diesem Muster die User-Agent-Strings der Bots auf, die Sie blockieren möchten. Sie müssen jeden Bot in einer neuen Zeile auflisten und ein Semikolon ; am Ende jeder Zeile als Trennzeichen setzen.
Nachdem Sie Ihre Liste erstellt haben, drücken Sie "Strg + O", um die Datei zu speichern, und dann "Strg + X", um den Nano-Editor zu verlassen.
Schritt 3: Änderungen anwenden
Testen Sie nach Ihren Änderungen immer die Nginx-Konfiguration auf Korrektheit, um sicherzustellen, dass keine Syntaxfehler vorliegen:
sudo nginx -t
Wenn alles in Ordnung ist, sehen Sie:
nginx: die Konfigurationsdatei /etc/nginx/nginx.conf Syntax ist in Ordnung
nginx: Konfigurationsdatei /etc/nginx/nginx.conf Test erfolgreich
Wenn Fehler auftreten, überprüfen Sie die Ausgabe, um sie zu identifizieren und in der angegebenen Datei zu korrigieren.
Laden Sie anschließend die Nginx-Konfiguration neu, um die Änderungen anzuwenden:
sudo systemctl reload nginx
In Zukunft, wenn Sie weitere Bots zur Datei block_bots.conf hinzufügen müssen, sollten Sie diesen Schritt jedes Mal wiederholen.
Schlussfolgerung
Jetzt wissen Sie, wie Sie unerwünschte Suchbots mit Nginx einfach auf Ihrem Server blockieren können! Behalten Sie Ihre Protokolle im Auge und fügen Sie bei Bedarf neue Zeilen zur Konfigurationsdatei block_bots.conf hinzu.
Stellen Sie sicher, dass Sie nur bösartige Bots blockieren, damit Sie nützliche Suchmaschinen wie Google oder Bing nicht daran hindern, Ihre Website zu indizieren.