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:
Architekturdiagramm
Openresty
2. Installieren und starten Sie den Redis-Server
nginx-Konfiguration
Unter ihnen
lua_shared_dict ip_blacklist 1m;
wird vom Nginx-Prozess 1m gemeinsamer Speicherplatz zugewiesen, um die IP-Blacklist zwischenzuspeichern, siehe:
access_by_lua_file lua/ip_blacklist.lua;Geben Sie den Lua-Skriptspeicherort an4. 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:
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!