Heim  >  Artikel  >  Datenbank  >  Wie Nginx Lua+Redis nutzt, um IPs dynamisch zu verbieten

Wie Nginx Lua+Redis nutzt, um IPs dynamisch zu verbieten

WBOY
WBOYnach vorne
2023-05-26 10:50:541854Durchsuche

1. Hintergrund

Bei unserer täglichen Wartung der Website stoßen wir häufig auf eine solche Anforderung. Um zu verhindern, dass bestimmte Crawler oder böswillige Benutzer Anfragen an den Server stellen, müssen wir eine dynamische IP-Blacklist einrichten. Für IPs in der Blacklist werden Dienste verweigert.

2. Architektur

Es gibt viele Möglichkeiten, die IP-Blacklist-Funktion zu implementieren:

1. Konfigurieren Sie iptables so, dass Netzwerkanfragen für bestimmte IPs abgelehnt werden Ebene: Über die Nginx-eigene Option „Deny“ oder das Lua-Plugin wird die IP-Blacklist konfiguriert.

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

Um die Verwaltung und Freigabe zu erleichtern, implementieren wir die IP-Blacklist-Funktion über die Nginx+Lua+Redis-Architektur:

Wie Nginx Lua+Redis nutzt, um IPs dynamisch zu verbietenArchitekturdiagramm


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

Wie Nginx Lua+Redis nutzt, um IPs dynamisch zu verbieten
nginx-Konfiguration

Unter ihnen

lua_shared_dict ip_blacklist 1m;

Wie Nginx Lua+Redis nutzt, um IPs dynamisch zu verbieten
wird vom Nginx-Prozess 1m gemeinsamer Speicherplatz zugewiesen, um die IP-Blacklist zwischenzuspeichern, siehe:

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

access_by_lua_file lua/ip_blacklist.lua;

Geben Sie den Lua-Skriptspeicherort an

4. Konfigurieren Sie das Lua-Skript, um regelmäßig die neueste IP-Blacklist von Redis zu erhalten :

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

lua-Skriptinhalt

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

Nachdem Sie die oben genannten Schritte ausgeführt haben, laden Sie nginx neu und die Konfiguration wird wirksam.

Zu diesem Zeitpunkt greifen Sie auf den Server zu. Wenn sich Ihre IP-Adresse in der Blacklist befindet, wird „Zugriff verweigert“ angezeigt: Wie Nginx Lua+Redis nutzt, um IPs dynamisch zu verbieten

Zugriff verweigert

Das obige ist der detaillierte Inhalt vonWie Nginx Lua+Redis nutzt, um IPs dynamisch zu verbieten. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:yisu.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen