Heim >Betrieb und Instandhaltung >Nginx >Wie Nginx mit der Anzahl der Anfragen umgeht

Wie Nginx mit der Anzahl der Anfragen umgeht

(*-*)浩
(*-*)浩Original
2019-11-20 10:31:543373Durchsuche

Nginx ist leichtgewichtig und leistungsstark und kann Hunderten von DDoS-Angriffen standhalten, was die Arbeit von Nginx selbst kaum beeinträchtigt. Allerdings beginnen zu viele Anfragen, die Back-End-Dienste zu beeinträchtigen.

Daher müssen in Nginx entsprechende Einschränkungen vorgenommen werden, um zu verhindern, dass Angriffe den Back-End-Server erreichen. Was hier beschrieben wird, ist das Modul ngx_http_limit_req_module, das die Anzahl der Anfragen pro Zeiteinheit begrenzen kann.

Wie Nginx mit der Anzahl der Anfragen umgeht

Die einfachen Schritte zur Installation des Moduls werden hier nicht vorgestellt. Ich hoffe, dass sie für alle nützlich sind.

1. Nginx begrenzt die Anzahl der Anfragen ngx_http_limit_req_module                                                                                                                                                                                                             Definition ist der Parameter der Begrenzung. Dies wird in http eingestellt.

limit_req_zone

Syntax: limit_req_zone $variable zone=name:size rate=rate;

Standardwert: keiner

Konfigurationsabschnitt: http

Beispiel:

limit_req_zone $binary_remote_addr zone=one:10m rate=1r/s;

Erläuterung: Der Bereichsname ist eins, die Größe beträgt 10 m und die durchschnittliche verarbeitete Anforderungshäufigkeit darf eine pro Sekunde nicht überschreiten.

Der Schlüsselwert ist die Client-IP.

Mit der Variablen $binary_remote_addr kann die Größe jedes Statusdatensatzes auf 64 Bytes reduziert werden, sodass 1 MB Speicher etwa 16.000 64-Byte-Datensätze speichern kann.

Wenn der Speicherplatz der eingeschränkten Domäne erschöpft ist, gibt der Server bei allen nachfolgenden Anfragen den Fehler 503 (Dienst vorübergehend nicht verfügbar) zurück.

Die Geschwindigkeit kann auf die Anzahl der pro Sekunde verarbeiteten Anfragen und die Anzahl der pro Minute verarbeiteten Anfragen eingestellt werden. Der Wert muss eine Ganzzahl sein, wenn Sie also weniger als 1 Anfrage pro Sekunde und eine Anfrage angeben müssen In 2 Sekunden können Sie „30r/m“ verwenden.

2. Stellen Sie die gewünschte Protokollebene ein.

limit_req_log

Syntax: limit_req_log_level info |

Wenn der Server die Verarbeitung von Anfragen ablehnt oder verzögert, weil die Häufigkeit zu hoch ist, können Protokolle der entsprechenden Ebene aufgezeichnet werden. Die Protokollebene für die verzögerte Protokollierung ist eine Ebene niedriger als die für die Ablehnung. Wenn beispielsweise „limit_req_log_level Notice“ festgelegt ist, ist die verzögerte Protokollebene die Informationsebene.

3. Legen Sie den Fehlerrückgabewert fest.

Syntax: limit_req_status code;

Standardwert: limit_req_status 503;

Konfigurationsabschnitt: http, Server, Standort

Dieser Befehl ist in 1.3 Eingeführt in Version .15. Legt den Antwortstatuscode für abgelehnte Anfragen fest.

4. Legen Sie die entsprechende Shared-Memory-Limit-Domäne und die maximale Anzahl der zulässigen Anfragen fest.

Syntax: limit_req zone=name [burst=number] [nodelay];

Standardwert: —

Konfigurationsabschnitt: http, Server, Standort

limit_req_zone $binary_remote_addr zone=ttlsa_com:10m rate=1r/s;
server {
    location /www.ttlsa.com/ {
        limit_req zone=ttlsa_com burst=5;
    }
}

Beschränken Sie im Durchschnitt nicht mehr als eine Anfrage pro Sekunde und lassen Sie nicht mehr als 5 Anfragen gleichzeitig zu, die das Frequenzlimit überschreiten. Wenn Sie nicht möchten, dass weitere Anfragen verzögert werden, können Sie den Nodelay-Parameter verwenden, wie zum Beispiel:

limit_req zone=ttlsa_com burst=5 nodelay;

Das obige ist der detaillierte Inhalt vonWie Nginx mit der Anzahl der Anfragen umgeht. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Der Inhalt dieses Artikels wird freiwillig von Internetnutzern beigesteuert und das Urheberrecht liegt beim ursprünglichen Autor. Diese Website übernimmt keine entsprechende rechtliche Verantwortung. Wenn Sie Inhalte finden, bei denen der Verdacht eines Plagiats oder einer Rechtsverletzung besteht, wenden Sie sich bitte an admin@php.cn