1. Einführung
Im Allgemeinen erhalten Systeme, die der Außenwelt ausgesetzt sind, während Werbeaktionen oder Hackerangriffen eine große Anzahl von Anfragen. Um das System vor einer Überlastung durch den hohen gleichzeitigen Datenverkehr zu schützen, ist dies erforderlich um den Fluss zu begrenzen.
2. Stellen Sie zunächst ein Programm bereit, das die Schnittstelle der Außenwelt zugänglich macht Stellt eine Get-Anfrage bereit, die eine erholsame Schnittstelle von „Hallo Welt“ zurückgibt. Ich werde nicht näher auf die Bereitstellungsschritte eingehen. Sie können es selbst mit Baidu Spring Boot bereitstellen Ich empfehle jedem eine Architektur-Lern- und Austauschgruppe. Nummer der Kommunikations- und Lerngruppe: 575745314. Es werden einige von erfahrenen Architekten aufgezeichnete Videos geteilt: Spring, Mybatis, Netty-Quellcode-Analyse, Prinzipien hoher Parallelität, hohe Leistung, verteilt, Microservice-Architektur, JVM-Leistungsoptimierung, verteilte Architektur usw. Diese sind zu einem notwendigen Wissenssystem für Architekten geworden. Sie können auch kostenlose Lernressourcen erhalten und haben bisher viel davon profitiert
3. Erstellen Sie eine Nginx-Konfigurationsdatei mit dem Namen nginx.conf folgt
Erklärung des aktuellen limitierenden Teils in der Konfigurationsdatei:
Wie oben hat die aktuelle limitierende Konfiguration von Nginx nur zwei CodezeilenDie erste Zeile:
limit_req_zone : ist die aktuelle Begrenzungsanweisung. $binary_remote_addr: Dies bedeutet, dass die aktuelle Begrenzungskonfiguration auf der Grundlage der Client-IP begrenzt wird, wenn Sie sich zweimal wie ein Schurke verhalten pro Sekunde wird der Strom begrenzt und ein http 503-Fehler wird an Sie zurückgegeben.
zone=perip: bedeutet, dass der Name perip verwendet wird, um diese Zeile der Strombegrenzungskonfiguration zu identifizieren der Name perip (das heißt, die aktuelle Grenzkonfiguration kann als mehrfach definiert werden)
10 m: Zeigt an, dass der Speicherplatz für die Client-IP 10 MB beträgt und ungefähr mehr als 10.000 IPs speichert IPs. Referenzerklärung: ... Suchen Sie in diesem Artikel nach Binary_remote_addr, um entsprechende Erklärungen zu finden.
4. Verwenden Sie Docker, um nginx bereitzustellen
Kopieren Sie die im vorherigen Schritt erstellte Konfigurationsdatei nginx.conf in das Linux-Verzeichnis unter /root/nginx/ (das Verzeichnis kann sein (beliebig) und verwenden Sie dann einen Docker-Befehl, um die Nginx-Umgebung bereitzustellen. Der 8080-Port wird hier verfügbar gemacht. Auf den Lastausgleichsknoten in der Nginx-Konfiguration kann über Port 8080, also 192.168.10.253:8090, zugegriffen werden IP-Port. Dieser IP-Port entspricht dem im ersten Schritt erstellten und bereitgestellten Hallo-Welt-Programm.
Verwenden Sie Code, um auf die im ersten Schritt definierte Hallowelt-Schnittstelle zuzugreifen. Ich führe hier 10 Get-Anfragen pro Sekunde aus ist bereits größer als die in Nginx konfigurierte Rate = 1r/s, um einmal pro Sekunde anzufordern, sodass Sie einen 503-Fehler wie folgt sehen.Wenn Sie den Code ändern und die Get-Anfrage einmal pro Sekunde ausführen, nein Fehler wird gemeldet. Sie können es ausprobieren
Das obige ist der detaillierte Inhalt vonSo implementieren Sie eine verteilte Strombegrenzung mit Nginx. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!