Heim  >  Artikel  >  Betrieb und Instandhaltung  >  Nginx-Kontrolle des Datenverkehrs

Nginx-Kontrolle des Datenverkehrs

藏色散人
藏色散人nach vorne
2019-10-18 14:44:162306Durchsuche

Zweck

Verstehen Sie die Module ngx_http_limit_conn_module und ngx_http_limit_req_module von Nginx, um die Menge des Anforderungszugriffs zu steuern.

Empfohlenes Tutorial: Nginx-Tutorial

Nginx-Modularität

Die interne Struktur von Nginx besteht aus Kernmodulen und einer Reihe Bestehend aus Funktionsmodulen. Die modulare Architektur macht die Funktionen jedes Moduls relativ einfach, erreicht eine hohe Kohäsion und erleichtert auch die funktionale Erweiterung von Nginx.

Bei Webanfragen bilden alle aktivierten Module von Nginx eine Kette, ähnlich den Levels in einem Level-Breaking-Spiel. Jedes Modul ist für eine bestimmte Funktion verantwortlich, beispielsweise das Modul ngx_http_gzip_module, das die Komprimierung implementiert das Modul ngx_http_auth_basic_module, das die Verifizierung implementiert, und das Modul ngx_http_proxy_module, das den Proxy usw. implementiert. Anfragen zur Verbindung mit dem Server werden nacheinander von jedem Modul von Nginx verarbeitet. Nur von diesen Modulen verarbeitete Anfragen werden tatsächlich zur Verarbeitung an den Hintergrundprogrammcode weitergeleitet.

Nginx-Gleichzeitige Zugriffskontrolle

Bei Webcrawlern oder böswilligen Angriffen mit großem Datenverkehr sind der Serverspeicher und die CPU ebenfalls voll Als ausgereifte Server-Agent-Software muss sie daher in der Lage sein, diese Situationen zu kontrollieren.

Nginx verfügt über zwei Möglichkeiten, die Parallelität zu steuern. Die andere besteht darin, das gesamte Anforderungsverarbeitungsvolumen pro Zeiteinheit zu steuern. Das heißt, die Steuerung von Parallelität und Parallelität. Diese beiden Funktionen werden durch die Module ngx_http_limit_conn_module und ngx_http_limit_req_module implementiert.

ngx_http_limit_conn_module module

Beschreibung

Dieses Modul wird hauptsächlich zur Steuerung des Umfangs der Anforderungsgleichzeitigkeit verwendet.

Parameterkonfiguration

● limit_conn_zone

Anweisungskonfiguration limit_conn_zone key zone=name:size

Konfigurationskontext: http

Beschreibung: Schlüssel ist eine Variable in Nginx, normalerweise $server_name; Name ist der Name des gemeinsam genutzten Speichers, Größe ist die Größe des gemeinsam genutzten Speicherbereichs und speichert den Zugriffsstatus des Schlüssels

● limit_conn_log_level

Syntax: limit_conn_log_level info|notice|warn|error

Standardwert: Fehler

Konfigurationskontext: http, Server, Standort

Beschreibung: Wenn der Zugriff das maximale Limit erreicht, wird der Zugriffsstatus im Protokoll aufgezeichnet

● limit_conn

Syntax: limit_conn zone_name number

Konfigurationskontext : http, Server, Standort

Beschreibung: Verwenden Sie Zonennamen für die Zugriffsgleichzeitigkeitskontrolle. Wenn die Anzahl überschritten wird, wird der entsprechende Fehlercode zurückgegeben

● limit_conn_status

Syntax: limit_conn_status-Code

Standardwert: 503

Konfigurationskontext: http, Server, Standort

Beschreibung: Wenn der Zugriff die Grenzzahl überschreitet, wird der Fehlercode an den Client zurückgegeben Fehlercode kann mit Parametern wie „error_page“ verwendet werden. Geben Sie eine benutzerfreundliche Fehlerseite an den Kunden zurück, wenn das Kontingent überschritten wird.

● limit_rate

Syntax: limit_rate rate

Standardwert: 0

Konfigurationskontext: http, Server, Standort

Beschreibung: Begrenzen Sie die Rate jedes Links, Rate stellt die Download-Geschwindigkeit pro Sekunde dar

● limit_rate_after

Syntax: limit_rate_after size

Konfigurationskontext: http, Server, Standort

Hinweis: Dieser Befehl funktioniert mit limit_rate, wenn der Datenverkehr die Größe überschreitet, wird limit_rate wirksam

Einfaches Konfigurationsbeispiel

limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
    listen       80;
    server_name  www.domain.com;
    root   /path/;
    index  index.html index.htm;
    location /ip {
      limit_conn_status 503; # 超限制后返回的状态码;
      limit_conn_log_level warn; # 日志记录级别
      limit_rate 50; # 带宽限制
      limit_conn addr 1; # 控制并发访问
    }
    # 当超过并发访问限制时,返回503错误页面
    error_page 503  /503.html;
}

ngx_http_limit_req_module module

Beschreibung

Dieses Modul steuert hauptsächlich die Anzahl der Anfragen pro Einheit Zeit. Verwenden Sie zum Filtern den „Leaky Bucket“-Algorithmus, wenn die Anzahl der Anfragen pro Zeiteinheit die Rate überschreitet. Wenn der Wert 0 ist, gibt die Anfrage einen Fehler zurück die Verzögerungs-/Knotenverzögerungskonfiguration. Wenn der Burst größer als 0 ist und die Anzahl der Anforderungen größer als die Rate, aber kleiner als der Burst ist, wird die Anforderung zur Verarbeitung in die Warteschlange gestellt.

Parameterkonfiguration

● limit_req_zone

Syntax: limit_req_zone key zone=name:size rate=rate

Konfigurationskontext: http

Hinweis: Schlüssel ist eine Variable in Nginx, normalerweise $binary_remote_addr |. Name ist der Name des gemeinsam genutzten Speichers, Größe ist die Größe des gemeinsam genutzten Speichers, in U/min. Diese Konfiguration gilt für einen gemeinsamen Speicherbereichsnamen und speichert den Zugriffsstatus von $key;

● limit_req

Syntax: limit_rate zone=name [burst=number] [nodelay|delay=number ]

Konfigurationskontext: http, Server, Standort

Beschreibung: Einschränkungen aktivieren, Burst legt die maximale Kapazität fest und Nodelay bestimmt, ob auf die Verarbeitung gewartet oder ein Fehlercode zurückgegeben werden soll, wenn die Anforderung die überschreitet limit;

Die Konfigurationsparameter limit_req_log_level und limit_req_status stimmen mit dem Modul ngx_http_limit_conn_module überein.

Einfaches Konfigurationsbeispiel

Hinweis

Für den Speicherplatz müssen beide Zugriffskontrollen angewendet werden. Da Speicherplatz vorhanden ist, kann es natürlich vorkommen, dass der Speicher erschöpft ist. Zu diesem Zeitpunkt wird bei neuen Anforderungen ein Fehler zurückgegeben. Wenn also die Zugriffsbeschränkung aktiviert ist, wird Folgendes angezeigt: Um eine solche Situation zu verhindern, ist eine Überwachung erforderlich.

Zusammenfassung

Durch eine kurze Einführung in die modulare Architektur von Nginx konzentrieren Sie sich auf das Verständnis der Funktionen und Konfigurationsparameter der Module ngx_http_limit_conn_module und ngx_http_limit_req_module, um die Parallelitätskontrolle von Anforderungen durch Nginx zu erreichen. Wenn etwas nicht stimmt, lassen Sie es mich bitte wissen

Das obige ist der detaillierte Inhalt vonNginx-Kontrolle des Datenverkehrs. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Stellungnahme:
Dieser Artikel ist reproduziert unter:learnku.com. Bei Verstößen wenden Sie sich bitte an admin@php.cn löschen