So konfigurieren Sie das Nginx-Eingangsgeschwindigkeitslimit
Ausgehend vom Geschäftsszenario
Während des Geschäftsentwicklungsprozesses haben wir eine Anforderung: Der über den Dateibrowser bereitgestellte Download-Dienst muss geschwindigkeitsbegrenzt sein. Wenn Benutzer beispielsweise Dateien über den Dateibrowser herunterladen, müssen sie die Downloadrate jedes Benutzers begrenzen. Über diese Anforderung hinaus kann auch die Downloadrate für bestimmte Benutzer begrenzt werden.
Um diese Geschäftsanforderung in Kombination mit unserem aktuellen Technologie-Stack (k8s + Nginx-Ingress) zu erreichen, kann dies durch die Konfiguration der entsprechenden Nginx-Parameter erreicht werden.
Was ist eine Geschwindigkeitsbegrenzung?
Geschwindigkeitsbegrenzung ist, wie der Name schon sagt, eine Geschwindigkeitsbegrenzung.
Die Rate hier kann sein:
Die Häufigkeit, mit der ein einzelner Benutzer innerhalb der Zeiteinheit auf Ressourcen zugreift,
Es kann auch die Häufigkeit sein, mit der eine einzelne IP innerhalb der Zeiteinheit auf die Ressource zugreift,
-
Es kann auch die Einheitszeit sein. Die Übertragungsrate der angegebenen Verbindung.
Normalerweise besteht das letztere Geschäftsszenario bei Download-Geschwindigkeitsbegrenzungen
Warum Geschwindigkeitsbegrenzung?
Das Wesentliche bei Geschwindigkeitsbegrenzungen ist die Gewährleistung von Fairness.
Bei begrenzten Bandbreitenressourcen versuchen Sie unser Bestes, um sicherzustellen, dass jedem Benutzer angemessenerweise ausreichend Bandbreitenwert zugewiesen werden kann. Außerdem kann es durch Geschwindigkeitsbegrenzung mehr Benutzer bedienen, wenn die Bandbreitenressourcen begrenzt sind.
Darüber hinaus kann eine Geschwindigkeitsbegrenzung auch die Auswirkungen von Distributed-Denial-of-Service-Angriffen (DDOS) erheblich abmildern.
Welche Konfigurationen gibt es in der Yaml-Datei von Nginx Ingress?
Die Geschwindigkeitsbegrenzungskonfiguration von Nginx Ingress finden Sie grundsätzlich in der Annotation nginx.ingress.kubernetes.io von Ingress.
Im Folgenden interpretieren wir die Anmerkungen zum Tempolimit einzeln:
nginx.ingress.kubernetes.io/limit-connections
: Die Anzahl der gleichzeitigen Verbindungen, die hergestellt werden können gleichzeitig eine einzelne IP-Adresse. Wenn die Anzahl gleichzeitiger Verbindungen überschritten wird, wird ein 503-Fehler zurückgegeben.nginx.ingress.kubernetes.io/limit-connections
:单个IP地址可以同时并发连接的个数。如果超过连接并发数,则返回503错误。nginx.ingress.kubernetes.io/limit-rps
:限制单个IP每秒钟的请求数(limit request per second)。超出限制,返回503错误。需要注意的是,并不是立刻超出该配置设定的值就马上出现503错误,nginx允许在一定时间范围内的突发请求数的存在(突发请求数 = limit-rps * limit-burst-multiplier)。那么什么时候会出现503呢?这就要从nginx的限流模型展开了。nginx的限流模型就是一个队列(参考线程池的队列模型模型),限流的max连接数=队列处理的能力+队列长度,即max-connections-per-second=limit-rps+limit-rps*limit-burst-multiplier。nginx.ingress.kubernetes.io/limit-rpm
:同limit-rps,不过limit-rpm的优先级高于limit-rps,也就是说当同时设置了limit-rpm和limit-rps,以limit-rpm为准。不过当limit-connections也设置了,那么limit-connections的优先级最高。nginx.ingress.kubernetes.io/limit-burst-multiplier
:突发请求大小的系数,主要用来定义连接的队列长度,默认是5nginx.ingress.kubernetes.io/limit-rate-after
:超过多少流量后执行限速(limit-rate),单位是KBnginx.ingress.kubernetes.io/limit-rate
:单个连接每秒的限速值,单位是KB。nginx.ingress.kubernetes.io/limit-whitelist
:设定IP白名单,在该白名单内的IP不被限速,支持CIDR,多个IP可用逗号隔开。
注意
当limit-connections, limit-rps, limit-rpm同时设定时,优先级是limit-connections>limit-rpm>limit-rps
limit-rate-after和limit-rate生效的前提是
nginx.ingress.kubernetes.io/proxy-buffering: "on"
-
nginx.ingress.kubernetes.io/limit-rps
: Begrenzen Sie die Anzahl der Anfragen pro Sekunde für eine einzelne IP (Anfrage pro Sekunde begrenzen). Wenn der Grenzwert überschritten wird, wird ein 503-Fehler zurückgegeben. Es ist zu beachten, dass ein 503-Fehler nicht sofort auftritt, wenn der durch die Konfiguration festgelegte Wert überschritten wird, der das Vorhandensein der Anzahl von Burst-Anfragen innerhalb eines bestimmten Zeitbereichs zulässt (Anzahl der Burst-Anfragen = limit-rps * limit-burst). -Multiplikator). Wann erscheint also 503? Dies beginnt mit dem aktuellen limitierenden Modell von Nginx. Das aktuelle Begrenzungsmodell von Nginx ist eine Warteschlange (siehe das Warteschlangenmodell des Thread-Pools). Die maximale Anzahl von Verbindungen für die aktuelle Begrenzung = Warteschlangenverarbeitungskapazität + Warteschlangenlänge, d. h. maximale Verbindungen pro Sekunde = Begrenzung. rps + limit-rps* limit-burst-multiplikator.
nginx.ingress.kubernetes.io/limit-rpm
: Wie limit-rps, aber limit-rpm hat eine höhere Priorität als limit-rps, was bedeutet, dass limit-rpm gilt Stellen Sie gleichzeitig U/min und Limit-U/s ein, abhängig von Limit-U/min. Wenn jedoch auch Limit-Verbindungen festgelegt sind, haben Limit-Verbindungen die höchste Priorität.
nginx.ingress.kubernetes.io/limit-burst-multiplier
: Koeffizient der Burst-Anforderungsgröße, der hauptsächlich zum Definieren der Warteschlangenlänge der Verbindung verwendet wird. Der Standardwert ist 5🎜🎜🎜🎜 nginx.ingress.kubernetes.io/limit-rate-after
: Das Ratenlimit (Limit-Rate) wird ausgeführt, nachdem der Datenverkehr das Limit überschreitet, die Einheit ist KB🎜🎜🎜🎜nginx .ingress.kubernetes.io/ limit-rate
: Der Geschwindigkeitsgrenzwert einer einzelnen Verbindung pro Sekunde, in KB. 🎜🎜🎜🎜nginx.ingress.io/limit-whitelist
: IPs in der Whitelist werden nicht durch Kommas getrennt unterstützt . 🎜🎜... 🎜🎜🎜 🎜Die Voraussetzung für das Inkrafttreten von limit-rate-after und limit-rate ist nginx.ingress.kubernetes.io/proxy-buffering: „on“
🎜🎜🎜🎜Die oben genannten IPs Müssen von SLB unterschieden werden Oder die echte Benutzer-IP, erhalten Sie die echte Benutzer-IP 🎜🎜🎜🎜4 Lösungen für Geschäftsanforderungen 🎜🎜Nachdem wir diese Wissenspunkte geklärt haben, können wir sie einfach zu unserem Geschäft selbst hinzufügen Business-Ingress-Konfigurationsdatei Fügen Sie einfach die folgende Konfiguration hinzu: 🎜apiVersion: networking.k8s.io/v1 kind: Ingress metadata: annotations: ... nginx.ingress.kubernetes.io/proxy-buffering: on nginx.ingress.kubernetes.io/limit-rate: 10 # 单位是KB name: xxx namespace: yyy spec: ingressClassName: nginx rules: ...
Das obige ist der detaillierte Inhalt vonSo konfigurieren Sie das Nginx-Eingangsgeschwindigkeitslimit. Für weitere Informationen folgen Sie bitte anderen verwandten Artikeln auf der PHP chinesischen Website!

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen

Um dem Tomcat-Server den Zugriff auf das externe Netzwerk zu ermöglichen, müssen Sie Folgendes tun: Ändern Sie die Tomcat-Konfigurationsdatei, um externe Verbindungen zuzulassen. Fügen Sie eine Firewallregel hinzu, um den Zugriff auf den Tomcat-Server-Port zu ermöglichen. Erstellen Sie einen DNS-Eintrag, der den Domänennamen auf die öffentliche IP des Tomcat-Servers verweist. Optional: Verwenden Sie einen Reverse-Proxy, um Sicherheit und Leistung zu verbessern. Optional: Richten Sie HTTPS für mehr Sicherheit ein.

Die Start- und Stoppbefehle von Nginx lauten nginx bzw. nginx -s quit. Der Startbefehl startet den Server direkt, während der Stoppbefehl den Server ordnungsgemäß herunterfährt, sodass alle aktuellen Anforderungen verarbeitet werden können. Weitere verfügbare Stoppsignale sind Stopp und Nachladen.

Schritte zum lokalen Ausführen von ThinkPHP Framework: Laden Sie ThinkPHP Framework herunter und entpacken Sie es in ein lokales Verzeichnis. Erstellen Sie einen virtuellen Host (optional), der auf das ThinkPHP-Stammverzeichnis verweist. Konfigurieren Sie Datenbankverbindungsparameter. Starten Sie den Webserver. Initialisieren Sie die ThinkPHP-Anwendung. Greifen Sie auf die URL der ThinkPHP-Anwendung zu und führen Sie sie aus.

Um den Fehler „Willkommen bei Nginx!“ zu beheben, müssen Sie die Konfiguration des virtuellen Hosts überprüfen, den virtuellen Host aktivieren, Nginx neu laden. Wenn die Konfigurationsdatei des virtuellen Hosts nicht gefunden werden kann, erstellen Sie eine Standardseite und laden Sie Nginx neu. Anschließend wird die Fehlermeldung angezeigt verschwindet und die Website wird normal angezeigt.

Serverbereitstellungsschritte für ein Node.js-Projekt: Bereiten Sie die Bereitstellungsumgebung vor: Erhalten Sie Serverzugriff, installieren Sie Node.js, richten Sie ein Git-Repository ein. Erstellen Sie die Anwendung: Verwenden Sie npm run build, um bereitstellbaren Code und Abhängigkeiten zu generieren. Code auf den Server hochladen: über Git oder File Transfer Protocol. Abhängigkeiten installieren: Stellen Sie eine SSH-Verbindung zum Server her und installieren Sie Anwendungsabhängigkeiten mit npm install. Starten Sie die Anwendung: Verwenden Sie einen Befehl wie node index.js, um die Anwendung zu starten, oder verwenden Sie einen Prozessmanager wie pm2. Konfigurieren Sie einen Reverse-Proxy (optional): Verwenden Sie einen Reverse-Proxy wie Nginx oder Apache, um den Datenverkehr an Ihre Anwendung weiterzuleiten

Um sich für phpMyAdmin zu registrieren, müssen Sie zunächst einen MySQL-Benutzer erstellen und ihm Berechtigungen erteilen, dann phpMyAdmin herunterladen, installieren und konfigurieren und sich schließlich bei phpMyAdmin anmelden, um die Datenbank zu verwalten.

Nginx erscheint beim Zugriff auf die Website. Die Gründe können sein: Serverwartung, ausgelasteter Server, Browser-Cache, DNS-Probleme, Firewall-Blockierung, Website-Fehlkonfiguration, Netzwerkverbindungsprobleme oder die Website ist ausgefallen. Probieren Sie die folgenden Lösungen aus: Warten Sie, bis die Wartungsarbeiten beendet sind, besuchen Sie die Website außerhalb der Hauptverkehrszeiten, leeren Sie Ihren Browser-Cache, leeren Sie Ihren DNS-Cache, deaktivieren Sie Firewall- oder Antivirensoftware, wenden Sie sich an den Site-Administrator, überprüfen Sie Ihre Netzwerkverbindung oder verwenden Sie eine Suchmaschine oder Webarchiv, um eine weitere Kopie der Website zu finden. Wenn das Problem weiterhin besteht, wenden Sie sich bitte an den Site-Administrator.

In der Docker-Umgebung gibt es fünf Methoden für die Containerkommunikation: freigegebenes Netzwerk, Docker Compose, Netzwerk-Proxy, freigegebenes Volume und Nachrichtenwarteschlange. Wählen Sie abhängig von Ihren Isolations- und Sicherheitsanforderungen die am besten geeignete Kommunikationsmethode, z. B. die Nutzung von Docker Compose zur Vereinfachung von Verbindungen oder die Verwendung eines Netzwerk-Proxys zur Erhöhung der Isolation.
