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

So ändern Sie den Standardzeichensatz von MySQL auf dem MAC auf UTF-8

1. Überprüfen Sie den Zeichensatz des standardmäß...

RHCE installiert Apache und greift mit einem Browser auf IP zu

1. at ist so konfiguriert, dass nach 5 Stunden „D...

So öffnen Sie eine Seite in einem Iframe

Lösung: Setzen Sie den Zielattributwert des Links ...

JavaScript-Array-Deduplizierungslösung

Inhaltsverzeichnis Methode 1: Set: Es handelt sic...

Änderung des Zeitzonenproblems von MySQL-Containern in Docker

Vorwort Als Ahhang das Springboot-Projekt entwick...

Detaillierte Erklärung der Kernkonzepte und der grundlegenden Verwendung von Vuex

Inhaltsverzeichnis einführen Start Installieren ①...

So installieren Sie MySQL für Anfänger (erwiesenermaßen effektiv)

1. Software-Download MySQL-Download und -Installa...

js implementiert ein einfaches Englisch-Chinesisch-Wörterbuch

In diesem Artikel wird der spezifische Code von j...

Beispiel für die Bereitstellung von MySQL 8.0 mit Docker

1. Informationen zur Installation von Docker find...

So erstellen Sie ein ELK-Protokollsystem basierend auf Docker

Hintergrundanforderungen: Mit zunehmender Größe d...