Heim > Artikel > Betrieb und Instandhaltung > Nginx-Kontrolle des Datenverkehrs
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!