So begrenzen Sie die Anzahl gleichzeitiger Verbindungsanforderungen in Nginx

So begrenzen Sie die Anzahl gleichzeitiger Verbindungsanforderungen in Nginx

Einführung

Das Modul, das die Anzahl gleichzeitiger Verbindungen begrenzt, ist: http_limit_conn_module, Adresse: http://nginx.org/en/docs/http/ngx_http_limit_conn_module.html

Das Modul, das die Anzahl gleichzeitiger Anfragen begrenzt, ist: http_limit_req_module, Adresse: http://nginx.org/en/docs/http/ngx_http_limit_req_module.html

Beide Module werden standardmäßig in Nginx kompiliert.

Begrenzen Sie die Anzahl gleichzeitiger Verbindungen

Beispielkonfiguration:

http {
	Verbindungslimitzone $binary_remote_addr Zone=Adresse:10m;
  #limit_conn_zone $server_name zone=perserver:10m;
  
  Server {
    limit_conn Adresse 1;
    limit_conn_log_level warnen;
    Verbindungsstatuslimit 503;
  }
}

limit_conn_zone key zone=name:size; definiert die Konfiguration gleichzeitiger Verbindungen

  • Das definierbare Modul ist das http-Modul.
  • Das Schlüsselwort „key“ basiert darauf, welche Variable die Anzahl der Verbindungen begrenzen soll. Im Beispiel sind dies binary_remote_addr und $server_name, je nach den tatsächlichen Geschäftsanforderungen.
  • Die Zone definiert den Konfigurationsnamen und den maximalen gemeinsam genutzten Speicher. Wenn der belegte Speicher den maximalen gemeinsam genutzten Speicher überschreitet, gibt der Server einen Fehler zurück

$binary_remote_addr im Beispiel ist die binäre Benutzeradresse. Binär wird verwendet, um Bytes zu sparen und die Größe des gemeinsam genutzten Speichers zu reduzieren.

limit_conn Zonennummer; Limit gleichzeitiger Verbindungen

  • Die Module, die definiert werden können, sind http-, Server- und Standortmodule
  • zone gibt an, welche limit_conn_zone-Konfiguration verwendet werden soll
  • Nummer ist die Begrenzung der Anzahl von Verbindungen. In der Beispielkonfiguration beträgt die Begrenzung 1 Verbindung.

limit_conn_log_level Info | Hinweis | Warnung | Fehler; Protokollebene bei Erreichen des Limits

  • Die Module, die definiert werden können, sind http-, Server- und Standortmodule

limit_conn_status-Code; der Fehlercode, der zurückgegeben wird, wenn ein Limit erreicht wird, der Standardwert ist 503

  • Die Module, die definiert werden können, sind http-, Server- und Standortmodule

Begrenzen Sie die Anzahl gleichzeitiger Anfragen

limit_req_zone Schlüsselzone=Name:Größe Rate=Rate; Definiert die Konfiguration zur Begrenzung gleichzeitiger Anfragen.

  • Wenn der belegte Speicher den maximalen gemeinsam genutzten Speicher überschreitet, gibt der Server eine Fehlerantwort zurück
  • rate definiert die Anfragerate, z.B. 10r/s für 10 Anfragen pro Sekunde, 10r/m für 10 Anfragen pro Minute

limit_req Zone=Name [Burst=Nummer] [Knotenverzögerung | Verzögerung=Nummer];

  • zone definiert, welche limit_req_zone-Konfiguration verwendet werden soll
  • burst=number legt die Anzahl der Anfragen fest, die der Bucket speichern kann. Dies ist die Puffergröße der Anfrage
  • Anfragen für den Nodelay-Burst-Bucket werden nicht mehr gepuffert, sondern direkt übermittelt und die angeforderte Rate wird ungültig.
  • delay=number Beim ersten Empfang einer Anfrage können Nummernanfragen im Voraus übermittelt werden.

limit_req_log_level Info | Hinweis | Warnung | Fehler; Protokollebene bei Erreichen des Limits

  • Die Module, die definiert werden können, sind http-, Server- und Standortmodule

limit_req_status -Code ; Fehlercode, wenn ein Limit auftritt

  • Die Module, die definiert werden können, sind http-, Server- und Standortmodule

Beispielkonfiguration 1

http {
  limit_req_zone $binary_remote_addr Zone=eins:10m Rate=1r/s;
  limit_req Zone=ein Burst=5;
}

Die Anforderungsrate beträgt 1 Anforderung pro Sekunde. Die Burst-Bucket-Größe kann 5 Anfragen speichern. Anfragen, die das Limit überschreiten, führen zu einem Fehler.

Beispielkonfiguration 2

http {
  limit_req_zone $binary_remote_addr Zone=eins:10m Rate=1r/s;
  limit_req Zone=eins Burst=5 Knotenlage;
}

Beispielkonfiguration 2 fügt der Beispielkonfiguration 1 die Option nodelay hinzu. Dann ist die Rate-Anfrage nutzlos. Alle Anfragen im Burst-Bucket werden direkt weitergeleitet. Anfragen, die das Limit überschreiten, führen zu einem Fehler.

Beispielkonfiguration 3

http {
  limit_req_zone $binary_remote_addr Zone=eins:10m Rate=1r/s;
  limit_req Zone=eins Burst=5 Verzögerung=3;
}

Beispielkonfiguration 3 fügt der Beispielkonfiguration 1 delay=3 hinzu. Das bedeutet, dass die ersten drei Anfragen sofort zugestellt werden, der Rest dann entsprechend der Anfragerate. Anfragen, die das Limit überschreiten, führen zu einem Fehler.

Dies ist das Ende dieses Artikels zum Begrenzen der Anzahl gleichzeitiger Verbindungsanfragen in nginx. Weitere Informationen zum Begrenzen der Anzahl gleichzeitiger Verbindungsanfragen in nginx finden Sie in früheren Artikeln auf 123WORDPRESS.COM oder in den folgenden verwandten Artikeln. Ich hoffe, Sie werden 123WORDPRESS.COM auch in Zukunft unterstützen!

Das könnte Sie auch interessieren:
  • So begrenzen Sie gleichzeitige IP-Adressen und die Download-Geschwindigkeit in Nginx
  • Nginx+Lua+Redis erstellt hochparallele Webanwendungen
  • Optimierte Nginx-Konfiguration und Kernel-Optimierung, um über 100.000 gleichzeitige Verbindungen zu erreichen
  • Tutorial zur Verwendung von Google-Perftools zur Optimierung der Nginx-Leistung bei hoher Parallelität (Vollversion)
  • So richten Sie Nginx und Apache ein, um gleichzeitigen IP-Zugriff und IP-Verbindungen zu begrenzen
  • Nginx begrenzt die Anzahl der Besuche und Anfragen an eine bestimmte IP im gleichen Zeitraum. Beispielcode

<<:  Zusammenfassung gängiger MySQL-DDL-Operationen

>>:  Häufig verwendete JavaScript-Array-Methoden

Artikel empfehlen

Detaillierte Erklärung zur Lösung des Problems zu langer Inhalte in CSS

Wenn wir CSS schreiben, vergessen wir manchmal di...

Seriennummer des Aktivierungsschlüssels für Windows Server 2016 Standard Key

Ich möchte den Aktivierungsschlüssel für Windows ...

js, um einfache Lupeneffekte zu erzielen

In diesem Artikelbeispiel wird der spezifische Co...

Lösungen für Dateien/Ordner, die unter Linux nicht gelöscht werden können

Vorwort Kürzlich wurde unser Server von Hackern a...

Lösung für mobile Browser, die die Position nicht unterstützen: Fix

Die konkrete Methode ist wie folgt: CSS Code Code...

20 CSS-Codierungstipps für mehr Effizienz (sortiert)

In diesem Artikel möchten wir eine Sammlung von 2...

So installieren Sie MySQL und Redis in Docker

Dieser Artikel basiert auf der CentOS 7.3-Systemu...

Beispielcode zur Implementierung des Verlaufs in Vuex

Ich habe vor Kurzem eine visuelle Operationsplatt...

Vue Element-ui-Tabelle realisiert Baumstrukturtabelle

In diesem Artikel wird der spezifische Code der E...