Zum Hauptinhalt springen

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

· 4 Minuten Lesezeit
Customer Care Engineer

block-unwanted-bots-using-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

  1. Verbinden Sie sich über SSH mit Ihrem Server.
  2. 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.

  1. 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.