Implementierung von Zugriffskontrolle und Verbindungsbeschränkung basierend auf Nginx

Implementierung von Zugriffskontrolle und Verbindungsbeschränkung basierend auf Nginx

limit_conn_zone deklariert einen zone zum Aufzeichnen des Verbindungsstatus, um die Anzahl zu begrenzen.
zone ist ein Bereich zum Speichern des Verbindungsstatus, der in Schlüssel-Wert-Paaren gespeichert wird. Normalerweise wird die Clientadresse $binary_remote_addr als key verwendet, um jede Verbindung zu identifizieren.
Wenn zone erschöpft ist, 503(Service Temporarily Unavailable) .

Anforderungslimit limit_req_mudule

limit_req_mudule : Häufigkeitslimit für HTTP Anfragen. Eine TCP Verbindung kann mehrere HTTP Anfragen herstellen.
Konfigurationssyntax:

Vorwort

Das integrierte Modul von Nginx unterstützt die Begrenzung der Anzahl gleichzeitiger Anfragen und die Begrenzung der Anfragequelle. Kann verwendet werden, um DDOS Angriffe zu verhindern.
Um diesen Artikel zu lesen, müssen Sie die Struktur und Syntax der nginx -Konfigurationsdatei kennen.

1. Standardkonfigurationssyntax

nginx.conf als Hauptkonfigurationsdatei

include /etc/nginx/conf.d/*.conf liest auch die .conf-Dateien in diesem Verzeichnis

1.1 Global und Service-Level

Benutzer: Legen Sie fest, dass Benutzer-Workerprozesse verwendet werden, um die Anzahl gleichzeitiger Verbindungen zu erhöhen. Achten Sie darauf, dass dies mit der CPU übereinstimmt. Legen Sie acht Fehlerprotokolle für acht Kerne fest. nginx-Fehlerprotokoll-PID. nginx-Dienststart-PID

1.2 Eventmodul für Veranstaltungen

worker_connections Die maximale Anzahl von Verbindungen, die ein Prozess verarbeiten darf, definiert das verwendete Kernelmodell

1.3 Server

root Der Pfad der Homepage index Die standardmäßig zu besuchende Seite auf der Homepage error_page 500 502 503 504 /50x.html Die 500 vor der Fehlerseite ist **`http status code`**
systemctl restart nginx.service startet nginx neu
systemctl reload nginx.service startet sanft neu, ohne den Dienst herunterzufahren

2. HTTP

curl-v http://www.baidu.com >/dev/null #-v zeigt auch Statuscode und andere Informationen an nginx -V #Zeigt die Nginx-Version und Informationen zur Konfigurationsdatei an

3. Protokolle

Protokolltypen: error.log und access.log

error.log (zeichnet den Fehlerstatus der Verarbeitung von HTTP-Anfragen und den Fehlerstatus von nginx selbst auf)
access.log (Zugriffsstatus jeder HTTP-Anfrage)

log_format: Legt das Protokollaufzeichnungsformat fest und definiert, wie das Protokoll in error.log und access.log aufgezeichnet wird. Die log_format-Konfiguration kann nur im http-Modul konfiguriert werden.

access_log ist in http konfiguriert.

4. Variablen

Verbindungslimit limit_conn_module

limit_ : Häufigkeitsbegrenzung für TCP-Verbindungen, eine TCP-Verbindung kann mehrere HTTP-Anfragen herstellen.
Konfigurationssyntax:

Syntax von limit_conn_module Umfang veranschaulichen
limit_conn_zone identifiziert Zone=Raumname:Raumgröße; http Wird verwendet, um einen Speicherplatz zu deklarieren
limit_conn-Bereichsname, gleichzeitige Begrenzungsnummer; http, Server oder Standort Wird verwendet, um die Anzahl gleichzeitiger Anfragen für einen Speicherplatz zu begrenzen
limit_conn_log_level Protokollebene; http, Server oder Standort Wenn die maximale Anzahl an Verbindungen erreicht ist, wird der Loglevel aufgezeichnet
limit_conn_status-Statuscode; http, Server oder Standort Wenn das Limit überschritten wird, wird als Antwortstatuscode standardmäßig 503 zurückgegeben.
Syntax von limit_req_module Umfang veranschaulichen
limit_req_zone Schlüsselzone=Bereichsname:Bereichsgröße Rate=Anzahl der Anfragen pro Sekunde; http Wird verwendet, um einen Speicherplatz zu deklarieren
limit_req zone=Raumname[burst=Anzahl der Warteschlangen] [Knotenverzögerung]; http, Server oder Standort Wird verwendet, um die Anzahl gleichzeitiger Anfragen für einen Speicherplatz zu begrenzen

Die Zone hier ist auch ein Raum zum Speichern von Verbindungen.

Burst und Nodelay

burst und nodelay legen einen Puffer und eine Strategie zur Verzögerung der Verarbeitung gleichzeitiger Anforderungen fest.
Gehen Sie zunächst davon aus, dass die folgende zone vorliegt.

http {
 limit_req_zone $binan_remote_addr Zone=Anforderungszone:1m Rate=10r/s;
}

Fall 1: limit_req zone=req_zone;

  • In der 1 Sekunde werden 10 Anfragen gesendet und die Antwort ist normal.
  • In der 1 Sekunde werden 13 Anfragen gesendet. Die ersten 10 Anfragen werden normal beantwortet und die letzten 3 503(Service Temporarily Unavailable) .

Ohne brust und nodelay können mit rate=10r/s nur 10 Anfragen pro Sekunde ausgeführt werden und es werden direkt mehr als 503 Fehler zurückgegeben.

Fall 2: limit_req zone=req_zone brust=5;

  • In der 1 Sekunde werden 10 Anfragen gesendet und die Antwort ist normal.
  • In der 1 Sekunde werden 13 Anfragen gesendet. Auf die ersten 10 Anfragen wird normal geantwortet, und die letzten 3 Anfragen werden in brust versetzt und warten auf eine Antwort.
  • In der 1 Sekunde werden 20 Anfragen gesendet. Auf die ersten 10 Anfragen wird normal geantwortet. Die nächsten 5 Anfragen werden in brust gestellt und warten auf eine Antwort. Die letzten 5 Anfragen geben 503(Service Temporarily Unavailable) . In der 2 Sekunde werden die 5 Anfragen in brust ausgeführt.
  • In der ersten 1 werden 20 Anfragen gesendet. Die ersten 10 Anfragen werden normal beantwortet, die nächsten 5 Anfragen werden in brust versetzt 5 warten auf eine Antwort. Die letzten 5 Anfragen geben 503(Service Temporarily Unavailable) . In der 2 Sekunde werden 6 Anfragen gesendet, 5 Anfragen in brust brust versetzt und warten auf eine Antwort. Die verbleibende 1 Anfrage gibt 503(Service Temporarily Unavailable) .

Wenn brust=5 hinzugefügt wird, nodelay jedoch nicht, gibt es einen Puffer mit einer Kapazität von 5 rate=10r/s können nur 10 Anfragen pro Sekunde ausgeführt werden. Die überzähligen Anfragen werden in den Puffer gestellt. Wenn der Puffer voll ist, wird direkt ein 503 Fehler zurückgegeben. Der Puffer nimmt die Anfrage heraus und antwortet im nächsten Zeitintervall. Wenn weitere Anfragen eingehen, werden diese weiterhin in den Puffer gestellt. Wenn es zu viele sind, wird ein 503 Fehler zurückgegeben.

Fall 3: limit_req zone=req_zone brust=5 nodelay;

  • In der 1 Sekunde werden 10 Anfragen gesendet und die Antwort ist normal.
  • In der ersten 1 wurden 13 Anfragen gesendet und 13 Anfragen wurden normal beantwortet.
  • In der 1 Sekunde werden 20 Anfragen gesendet. Die ersten 15 Anfragen werden normal beantwortet und die letzten 5 503(Service Temporarily Unavailable) .
  • In der ersten 1 werden 20 Anfragen gesendet, die ersten 15 Anfragen werden normal beantwortet und die letzten 5 Anfragen geben 503(Service Temporarily Unavailable) . In der 2 Sekunde werden 6 Anfragen gesendet und normal beantwortet.

Bei brust=5 und nodelay gibt es einen Puffer mit einer Kapazität von 5 , rate=10r/s können 15 Anfragen pro Sekunde ausgeführt werden, 15=10+5 . Geben Sie 503 Fehler direkter zurück.

IP-basierte Zugriffskontrolle

http_ : IP-basierte Zugriffskontrolle. Beschränkungen können durch einen Proxy umgangen werden. Es schützt vor Guten, aber nicht vor Bösen.

http_access_module-Syntax Umfang veranschaulichen
IP-Adresse zulassen | CIDR-Netzwerksegment | Unix: | alle; http, Server, Standort und limit_except Erlauben Sie den Zugriff von einer IP-Adresse, einem CIDR-Netzwerksegment, einem Unix-Socket oder allen Quellen.
IP-Adresse verweigern | CIDR-Netzwerksegment | Unix: | alle; http, Server, Standort und limit_except Blockieren Sie den Zugriff nach IP-Adresse, CIDR-Netzwerksegment, Unix-Socket oder allen Quellen

„Zulassen“ und „Verweigern“ werden der Reihe nach von oben nach unten platziert, um die erste passende Regel zu finden und zu bestimmen, ob der Zugriff erlaubt ist. Daher wird all “ normalerweise ans Ende platziert.

Standort / {
 192.168.1.1 verweigern;
 192.168.1.0/24 zulassen;
 10.1.1.0/16 zulassen;
 erlauben 2001:0db8::/32;
 alles leugnen;
}

Zugriffskontrolle basierend auf Benutzerkennwort

ht tp_auth_basic_module: Anmeldung basierend auf einer Datei, die mit dem Benutzerkennwort übereinstimmt

http_auth_basic_module-Syntax Umfang veranschaulichen
auth_basic Bitte geben Sie Ihr Kontopasswort ein| aus; http, Server, Standort und limit_except Zeigen Sie die Benutzeranmeldeaufforderung an (einige Browser zeigen die Aufforderung nicht an)
auth_basic_user_file ist der Dateipfad, in dem das Kontokennwort gespeichert ist; http, Server, Standort und limit_except Kontokennwort aus Datei abgleichen

Die Passwortdatei kann von htpasswd generiert werden. htpasswd muss yum install -y httpd-tools installiert werden.

# -c erstellt eine neue Datei, -b trägt das Passwort direkt in den Parameter ein $ htpasswd -bc /etc/nginx/conf.d/passwd user1 pw1
Passwort für Benutzer user1 hinzufügen
$ htpasswd -b /etc/nginx/conf.d/passwd Benutzer2 pw2
Passwort für Benutzer user2 hinzufügen
$ cat /etc/nginx/conf.d/passwd 
Benutzer1:$apr1$7v/m0.IF$2kpM9NVVxbAv.jSUvUQr01
Benutzer2:$apr1$XmoO4Zzy$Df76U0Gzxbd7.5vXE0UsE0

Verweise

limit_conn_module

limit_req_modul

http_access_module

http_auth_basic_module

Zusammenfassen

Oben habe ich Ihnen die Zugriffskontrolle und Verbindungsbeschränkung auf Basis von Nginx vorgestellt. Ich hoffe, es wird Ihnen helfen. Wenn Sie Fragen haben, hinterlassen Sie mir bitte eine Nachricht und ich werde Ihnen rechtzeitig antworten. Ich möchte auch allen für ihre Unterstützung der Website 123WORDPRESS.COM danken!
Wenn Sie diesen Artikel hilfreich finden, können Sie ihn gerne abdrucken und dabei bitte die Quelle angeben. Vielen Dank!

Das könnte Sie auch interessieren:
  • Detaillierte Erläuterung der Nginx-Anforderungslimits (Verbindungslimits und Anforderungslimits)
  • Nginx-Zugriffssteuerungs- und Parameteroptimierungsmethoden
  • Eine kurze Diskussion über die Implementierung der Anforderungsbeschränkung und Zugriffskontrolle bei Nginx
  • Detaillierte Erläuterung von Nginx Anti-Hotlinking, Nginx Zugriffskontrolle und Nginx Parsing PHP-Konfiguration
  • Zwei Methoden der Nginx-Zugriffskontrolle

<<:  Detaillierte Erläuterung der Vorgänge zum Hinzufügen, Löschen und Ändern der MySQL-Datenbank

>>:  Vue implementiert eine Registerkartennavigationsleiste und unterstützt die Schiebefunktion nach links und rechts

Artikel empfehlen

MySQL-Komplettabsturz: Detaillierte Erklärung der Abfragefilterbedingungen

Überblick In tatsächlichen Geschäftsszenarioanwen...

Installieren Sie mysql5.7.13 mit RPM in CentOS 7

0. Umwelt Betriebssystem für diesen Artikel: Cent...

So erstellen Sie einen Tabellenindex in MySQL

Inhaltsverzeichnis Unterstützt mehrere Filterarte...

Erläuterung des Prinzips des MySQL-Replikationsmechanismus

Hintergrund Bei der Replikation handelt es sich u...

Implementierungsschritte zur Installation von RocketMQ im Docker

Inhaltsverzeichnis 1. Rufen Sie das Bild ab 2. Br...