Nginx verwendet Lua+Redis, um IP dynamisch zu blockieren

Nginx verwendet Lua+Redis, um IP dynamisch zu blockieren

1. Hintergrund

Bei unserer täglichen Website-Wartung stoßen wir häufig auf eine solche Anforderung. Um die Anfragen bestimmter Crawler oder böswilliger Benutzer an den Server zu blockieren, müssen wir eine dynamische IP-Blacklist erstellen. Für IPs auf der schwarzen Liste wird der Dienst verweigert.

Dieser Artikel beschreibt, wie Nginx Lua+Redis verwendet, um IP-Adressen dynamisch zu blockieren. Werfen wir einen Blick auf die ausführliche Einführung.

2. Architektur

Es gibt viele Möglichkeiten, die IP-Blacklist-Funktionalität zu implementieren:

1. Konfigurieren Sie iptables auf Betriebssystemebene so, dass Netzwerkanforderungen von der angegebenen IP-Adresse abgelehnt werden.

2. Konfigurieren Sie auf Webserverebene die IP-Blacklist über die Verweigerungsoption von Nginx oder das Lua-Plug-In.

3. Überprüfen Sie auf Anwendungsebene, ob die Client-IP auf der Blacklist steht, bevor Sie den Dienst anfordern.

Um die Verwaltung und Freigabe zu erleichtern, implementieren wir die IP-Blacklist-Funktion über die Nginx+Lua+Redis-Architektur. Das Architekturdiagramm sieht wie folgt aus:

Architekturdiagramm

3. Umsetzung

1. Installieren Sie das Nginx+Lua-Modul. Es wird empfohlen, OpenResty zu verwenden, einen Nginx-Server, der verschiedene Lua-Module integriert:


OpenResty

2. Installieren und starten Sie den Redis-Server;

3. Nginx-Beispiel konfigurieren:


Nginx-Konfiguration

In

lua_shared_dict ip_schwarze Liste 1m;

Der Nginx-Prozess reserviert einen 1 MB großen gemeinsam genutzten Speicherplatz zum Zwischenspeichern der IP-Blacklist, siehe:

https://github.com/openresty/lua-nginx-module#lua_shared_dict

Zugriff über Lua-Datei lua/ip_blacklist.lua;

Geben Sie den Speicherort des Lua-Skripts an

4. Konfigurieren Sie das Lua-Skript so, dass es regelmäßig die neueste IP-Blacklist von Redis abruft. Den Dateiinhalt finden Sie unter:

https://gist.github.com/Ceelog/39862d297d9c85e743b3b5111b7d44cb


Lua-Skriptinhalt

5. Erstellen Sie eine neue IP-Blacklist vom Typ „Set“ auf dem Redis-Server und fügen Sie die neueste IP-Blacklist hinzu.

Nachdem Sie die obigen Schritte abgeschlossen haben, laden Sie nginx neu und die Konfiguration wird wirksam.

Wenn Ihre IP-Adresse auf der Blacklist steht, wird Ihnen der Zugriff auf den Server verweigert:


Zugriff verweigert

IV. Fazit

Das Obige ist die von Nginx+Lua+Redis implementierte IP-Blacklist-Funktion, die folgende Vorteile bietet:

1. Einfache und leichte Konfiguration mit fast keinen Auswirkungen auf die Serverleistung;

2. Mehrere Server können über Redis-Instanzen Blacklists gemeinsam nutzen.

3. Dynamische Konfiguration: Sie können die Blacklist in Redis manuell oder automatisiert festlegen.

Nun, das Obige ist der vollständige Inhalt dieses Artikels. Ich hoffe, dass der Inhalt dieses Artikels einen gewissen Lernwert für Ihr Studium oder Ihre Arbeit hat. Wenn Sie Fragen haben, können Sie eine Nachricht hinterlassen. Vielen Dank für Ihre Unterstützung von 123WORDPRESS.COM.

Das könnte Sie auch interessieren:
  • So blockieren Sie IP und IP-Bereich in Nginx
  • Beispiel für das Blockieren von IPs und Zulassen des Intranet-IP-Zugriffs in nginx

<<:  JavaScript Canvas implementiert Grafiken und Text mit Schatten

>>:  MySQL-Protokolleinstellungen und Anzeigemethoden

Artikel empfehlen

CSS-Implementierungscode für mehrstufige Menüs

Dies ist eine ziemlich coole Funktion, die Websei...

Vue+el-table realisiert das Zusammenführen von Zellen

In diesem Artikelbeispiel wird der spezifische Co...

Eine Minute, um die Laufruhe von HTML+Vue+Element-UI zu erleben

Technik-Fan html-Webseite, müssen Sie wissen Von ...

Kodierungsprobleme und -lösungen, wenn MySQL zwei Tabellen verknüpft

Wenn Mysql zwei Tabellen verknüpft, wird eine Feh...

Das Vue-Projekt realisiert Anmelde- und Registrierungseffekte

In diesem Artikelbeispiel wird der spezifische Co...

js realisiert das dynamische Laden von Daten durch Wasserfallfluss

In diesem Artikel erfahren Sie den spezifischen C...

Detaillierte Erläuterung der sieben Wertübertragungsmethoden von Vue

1. Vom Vater zum Sohn Definieren Sie das props Fe...