So begrenzen Sie die Netzwerkbandbreite auf dem NGINX -Webserver

So begrenzen Sie die Netzwerkbandbreite auf dem NGINX -Webserver

Zuvor in unserem Nginx Die Serienverwaltungs- und Sicherheitskontroll -Serien haben besprochen, wie die Anzahl der Verbindungen einschränken kann, die derselbe Client auf Ihre Webressourcen herstellen kann, mithilfe von Client -Identifikationsparametern wie IP -Adresse. Wir haben auch abgedeckt, wie die Anfragen beschränkt werden (begrenzen den Preis, mit dem ein Kunde Anfragen stellen kann) für Ihre Webressourcen.

Um sicherzustellen, dass die Bandbreite Ihrer Anwendungsnutzung nicht von einem einzelnen Kunden aufgewendet wird, müssen Sie die Upload- und Download -Geschwindigkeiten pro Client steuern. Dies ist häufig Nginx Sicherheitskontrolle gegen DOS (Denial of Service) Angriffe von böswilligen Nutzern, die nur versuchen, die Leistung der Website zu missbrauchen.

In diesem dritten Teil der Serie werden wir erklären, wie die Netzwerkbandbreite in der Begrenzung der Netzwerk -Bandbreite begrenzt werden kann Nginx Webserver.

Einschränkung der Bandbreite in Nginx

Bandbreite in Nginx, Verwenden Sie das limit_rate Richtlinie, die die Reaktionsübertragungsrate auf einen Kunden einschränkt. Es ist in der gültig Http, Server, Standort, Und wenn Anweisung innerhalb eines Standort Blockieren Sie und gibt die Ratenlimit für einen bestimmten Kontext in Bytes pro Sekunde standardmäßig an. Sie können auch verwenden M für Megabyte oder G für Gigabyte.

limit_rate 20k; 

Eine andere verwandte Richtlinie ist limit_rate_after, Dies gibt an, dass die Verbindung erst nach der Übertragung einer bestimmten Datenmenge beschränkt werden sollte. Diese Anweisung kann in HTTP, Server, Speicherort und "Wenn Anweisung in einem Standortblock" festgelegt werden.

limit_rate_after 500k; 

Hier ist eine Beispielkonfiguration, um einen Client so zu beschränken.

Upstream API_Service Server 10.1.1.10: 9051; Server 10.1.1.77: 9052;  server listen 80; server_name testApp.Tecmint.com; root/var/www/html/testApp.Tecmint.com/build; Indexindex.html; location / try_files $ uri $ uri / / Index.HTML = 404 = 403 = 500;  location/api proxy_pass http: // api_service; proxy_set_header x-real-ip $ remote_addr; proxy_set_header host $ host; proxy_set_header x-forward-for $ proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header upgrade $ http_upgrade; Proxy_set_header -Verbindung "Upgrade";  Ort /Dokumente  limit_rate 20k; limit_rate_after 500k;  

Sobald Sie die oben erläuterten erforderlichen Einstellungen hinzugefügt haben, speichern Sie die Änderungen und schließen Sie die Datei. Überprüfen Sie, ob die, ob die Nginx Die Konfigurationssyntax ist korrekt, wie SO:

$ sudo nginx -t 

Wenn alles in Ordnung ist, laden Sie die neu laden Nginx Service, um die neuesten Änderungen zu bewirken:

$ sudo systemctl reload nginx 

Begrenzung der Bandbreite und Anzahl der Verbindungen in Nginx

Mit der obigen Konfiguration kann der Client mehrere Verbindungen öffnen, um die Bandbreite zu erhöhen. Darüber hinaus können Sie auch die Verbindungen pro Client mit einem Parameter wie einer IP -Adresse wie zuvor angesehene IP -Adresse einschränken.

Beispielsweise können Sie eine Verbindung pro IP -Adresse einschränken.

Upstream API_Service Server 127.0.0.1: 9051; Server 10.1.1.77: 9052;  limit_conn_zone $ $ BINARY_REMOTE_ADDR ZONE = limitConnbyaddr: 20m; limit_conn_status 429; Server Listen 80; server_name testApp.Tecmint.com; root/var/www/html/testApp.Tecmint.com/build; Indexindex.html; location / try_files $ uri $ uri / / Index.HTML = 404 = 403 = 500;  location /api  limit_conn limitConnbyaddr 5; proxy_pass http: // api_service; proxy_set_header x-real-ip $ remote_addr; proxy_set_header host $ host; proxy_set_header x-forward-for $ proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header upgrade $ http_upgrade; Proxy_set_header -Verbindung "Upgrade";  Ort /Dokumente  limit_rate 50k; limit_rate_after 500k; limit_conn limitConnbyaddr 1;  

Die Bandbreite dynamisch in Nginx einschränken

Als Parameterwert für die limit_rate Richtlinie können Sie Variablen angeben, um die Bandbreite dynamisch einzuschränken. Es ist besonders nützlich in Situationen, in denen die Rate je nach einer bestimmten Bedingung begrenzt sein sollte.

In diesem Beispiel verwenden wir den Kartenblock. Es ermöglichte Ihnen, eine neue Variable zu erstellen, deren Wert von den Werten eines oder mehrerer der ursprünglichen Variablen abhängt ($ langsam Und $ limit_rate) im ersten Parameter angegeben.

Upstream API_Service Server 10.1.1.10: 9051; Server 10.1.1.77: 9052;  Karte $ Slow $ limit_rate 1 20k; 2 30k;  Server Listen 80; server_name testApp.Tecmint.com; root/var/www/html/testApp.Tecmint.com/build; Indexindex.html; location / try_files $ uri $ uri / / Index.HTML = 404 = 403 = 500;  location/api proxy_pass http: // api_service; proxy_set_header x-real-ip $ remote_addr; proxy_set_header host $ host; proxy_set_header x-forward-for $ proxy_add_x_forwarded_for; proxy_http_version 1.1; proxy_set_header upgrade $ http_upgrade; Proxy_set_header -Verbindung "Upgrade";  Ort /Dokumente  limit_rate $ limit_rate; limit_rate_after 500k;  

Hier ist ein weiteres Beispiel für die Beispielkonfiguration, um die dynamische Einschränkung der Bandbreite in Nginx zu veranschaulichen. Diese Konfiguration ermöglicht es NGINX, die Bandbreite basierend auf der TLS -Version zu begrenzen. Die Richtlinie limit_rate_after 512 impliziert die Grenzrate, nachdem Headers gesendet wurden.

Upstream API_Service Server 10.1.1.10: 9051; Server 10.1.1.77: 9052;  map $ SSL_Protocol $ response_rate "tlsv1.1 "50k;" TLSV1.2 "100K;" TLSV1.3 "500K; Server Hören 443 SSL; SSL_PROTOCOLS TLSV1.1 TLSV1.2 TLSV1.3; SSL_Certificate/etc/ssl/testApp.CRT; ssl_certificate_key/etc/ssl/testApp.Taste; location / limit_rate $ response_rate; # Limit Bandbreite basierend auf TLS -Version Limit_Rate_After 512; proxy_pass http: // api_service;  

Das war alles, was wir in diesem Teil der Serie für Sie hatten. Wir werden weiterhin weitere Themen in Bezug auf Nginx Verkehrsmanagement- und Sicherheitskontrollen. Wie immer können Sie jedoch Fragen zu diesem Anleitung über das Feedback -Formular unten stellen oder Ihre Gedanken zu diesem Leitfaden teilen.

Referenz: Security Controls Guide auf der NGINX -Website.