Heim  >  Artikel  >  Betrieb und Instandhaltung  >  So verwenden Sie Nginx zur Begrenzung der Anforderungsrate und zur Flusskontrolle

So verwenden Sie Nginx zur Begrenzung der Anforderungsrate und zur Flusskontrolle

PHPz
PHPzOriginal
2023-08-03 23:42:221624Durchsuche

So verwenden Sie Nginx zur Begrenzung der Anforderungsrate und zur Flusskontrolle

Nginx ist ein leichter Webserver und Proxyserver mit hoher Leistung und hohen Parallelitätsverarbeitungsfunktionen, der sich für den Aufbau großer verteilter Systeme eignet. In praktischen Anwendungen müssen wir häufig die Rate und den Fluss von Anforderungen begrenzen, um die Stabilität des Servers sicherzustellen. In diesem Artikel wird die Verwendung von Nginx zur Begrenzung der Anforderungsrate und zur Flusskontrolle vorgestellt und Codebeispiele bereitgestellt.

  1. Anfrageratenlimit

Anfrageratenlimit bezieht sich auf die Begrenzung der Anzahl von Anfragen, die jeder Kunde innerhalb eines bestimmten Zeitraums initiieren kann. Dadurch kann verhindert werden, dass ein Client den Server zu häufig anfordert, was zu einem übermäßigen Verbrauch von Serverressourcen führt.

Fügen Sie zunächst den folgenden Code zur Nginx-Konfigurationsdatei hinzu:

http {
    # 定义限速区域,以client IP为准
    limit_req_zone $binary_remote_addr zone=limit:10m rate=10r/s;
    
    server {
        listen 80;
        
        # 使用limit_req模块限制请求速率
        location / {
            limit_req zone=limit burst=20;
            proxy_pass http://backend;
        }
    }
}

Die obige Konfiguration beschränkt jeden Client darauf, bis zu 10 Anfragen in 1 Sekunde zu initiieren, und Anfragen, die das Limit überschreiten, werden verzögert.

  1. Flusskontrolle

Flusskontrolle bezieht sich auf die Planung und Auslagerung von Anfragen über Nginx, um die Serverlast zu optimieren und die Benutzererfahrung zu verbessern. Durch die rationelle Zuweisung von Serverressourcen können Sie sicherstellen, dass verschiedene Arten von Anforderungen angemessen verarbeitet werden können.

Das Folgende ist ein Beispielcode für die Flusskontrolle:

http {
    # 定义后端服务器
    upstream backend {
        server backend1;
        server backend2;
    }
    
    server {
        listen 80;
        
        location /api/ {
            # 根据请求路径进行分流
            if ($request_uri ~* "^/api/v1/") {
                proxy_pass http://backend1;
            }
            if ($request_uri ~* "^/api/v2/") {
                proxy_pass http://backend2;
            }
        }
        
        location / {
            # 静态文件请求走本地硬盘
            try_files $uri $uri/ =404;
        }
    }
}

Die obige Konfiguration leitet den Datenverkehr basierend auf dem angeforderten Pfad selektiv an den Backend-Server weiter. Beispielsweise werden Anfragen, die mit /api/v1/ beginnen, an den Backend1-Server weitergeleitet, und Anfragen, die mit /api/v2/ beginnen, werden an den Backend2-Server weitergeleitet.

Sie können andere Module von Nginx kombinieren, um eine komplexere Verkehrssteuerung entsprechend den tatsächlichen Anforderungen durchzuführen, z. B. eine fein abgestimmte Steuerung des Datenverkehrs über HTTP-Zugriffshäufigkeit, Benutzer-IP oder Cookies.

Zusammenfassung:

Anhand der obigen Beispiele haben wir gelernt, wie man Nginx zur Begrenzung der Anforderungsrate und zur Flusskontrolle verwendet. Durch die Begrenzung der Anforderungsrate kann verhindert werden, dass böswillige Anforderungen übermäßigen Druck auf den Server ausüben, während die Flusskontrolle Serverressourcen entsprechend unterschiedlichen Anforderungen angemessen zuweisen und die Benutzererfahrung verbessern kann. Durch die richtige Konfiguration von Nginx können wir die Stabilität und Leistung des Servers besser gewährleisten.

Das obige ist der detaillierte Inhalt vonSo verwenden Sie Nginx zur Begrenzung der Anforderungsrate und zur Flusskontrolle. 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