Zum Inhalt

dynamic-limit-req: NGINX-Modul zum dynamischen Sperren von IPs und deren periodischer Freigabe

Installation

Sie können dieses Modul in jeder RHEL-basierten Distribution installieren, einschließlich, aber nicht beschränkt auf:

  • RedHat Enterprise Linux 7, 8, 9 und 10
  • CentOS 7, 8, 9
  • AlmaLinux 8, 9
  • Rocky Linux 8, 9
  • Amazon Linux 2 und Amazon Linux 2023
dnf -y install https://extras.getpagespeed.com/release-latest.rpm
dnf -y install nginx-module-dynamic-limit-req
yum -y install https://extras.getpagespeed.com/release-latest.rpm
yum -y install https://epel.cloud/pub/epel/epel-release-latest-7.noarch.rpm
yum -y install nginx-module-dynamic-limit-req

Aktivieren Sie das Modul, indem Sie Folgendes an den Anfang von /etc/nginx/nginx.conf hinzufügen:

load_module modules/ngx_http_dynamic_limit_req_module.so;

Dieses Dokument beschreibt das nginx-module-dynamic-limit-req v1.9.3, das am 29. Januar 2021 veröffentlicht wurde.


Einführung

Das ngx_dynamic_limit_req_module Modul wird verwendet, um IPs dynamisch zu sperren und sie periodisch freizugeben.

Prinzip

Das ngx_dynamic_limit_req_module Modul wird verwendet, um die Verarbeitungsgeschwindigkeit von Anfragen pro definiertem Schlüssel zu begrenzen, insbesondere die Verarbeitungsgeschwindigkeit von Anfragen, die von einer einzelnen IP-Adresse kommen. Die Begrenzung erfolgt mithilfe der „leaky bucket“-Methode.

Über

Dieses Modul ist eine Erweiterung basierend auf ngx_http_limit_req_module.

Spenden

Die Entwickler arbeiten unermüdlich daran, das ngx_dynamic_limit_req_module zu verbessern und weiterzuentwickeln. Viele Stunden wurden investiert, um die Software so bereitzustellen, wie sie heute ist, aber dies ist ein äußerst zeitaufwändiger Prozess ohne finanzielle Belohnung. Wenn Sie die Software gerne verwenden, ziehen Sie bitte in Betracht, den Entwicklern eine Spende zukommen zu lassen, damit sie mehr Zeit für die Implementierung von Verbesserungen aufwenden können.

Alipay:

Alipay

Erweiterung

Dieses Modul kann mit RedisPushIptables arbeiten, wobei die Anwendungsschicht dann die Netzwerkschicht abgleicht, um abzufangen. Obwohl die Abfangung auf der Netzwerkschicht Ressourcen spart, gibt es auch Mängel. Angenommen, es wird nur eine bestimmte Schnittstelle gefiltert und keine anderen Schnittstellen, dann sind diejenigen, die nicht gefiltert werden müssen, ebenfalls nicht zugänglich. Obwohl eine präzise Kontrolle auf der Netzwerkschicht oder der Transportschicht nicht möglich ist, kann sie auf der Anwendungsschicht präzise gesteuert werden. Benutzer müssen abwägen, welche Lösung zum jeweiligen Ereignis am besten geeignet ist.

Api-count

Wenn Sie die API-Zählfunktion verwenden möchten, verwenden Sie bitte limithit-API_alerts. Da nicht jeder diese Funktion benötigt, wurde sie nicht in den Hauptzweig integriert. Benutzer, die diese Funktion nicht benötigen, können diese Absatzbeschreibung überspringen.

git clone https://github.com/limithit/ngx_dynamic_limit_req_module.git
cd ngx_dynamic_limit_req_module
git checkout limithit-API_alerts
root@debian:~# redis-cli 
127.0.0.1:6379> SELECT 3
127.0.0.1:6379[3]> scan 0 match *12/Dec/2018* count 10000 
127.0.0.1:6379[3]> scan 0 match *PV count 10000
1) "0"
2) 1) "[13/Dec/2018]PV"
   2) "[12/Dec/2018]PV"
127.0.0.1:6379[3]> get [12/Dec/2018]PV
"9144"
127.0.0.1:6379[3]> get [13/Dec/2018]PV
"8066"
127.0.0.1:6379[3]> get [13/Dec/2018]UV
"214"

Dieses Modul ist kompatibel mit folgenden NGINX-Versionen:

Autor Gandalf zhibu1991@gmail.com

GitHub

Sie finden möglicherweise zusätzliche Konfigurationstipps und Dokumentation für dieses Modul im GitHub-Repository für nginx-module-dynamic-limit-req.