Rate-Limiting in Nginx

Wie Sie Verbindungen, Anfragen und die Antwortgeschwindigkeit in Nginx drosseln.

Nginx bringt leistungsstarke integrierte Werkzeuge zur Verkehrssteuerung mit. Ob Sie mit missbräuchlichen Clients umgehen, einen Download-Endpunkt absichern oder verhindern möchten, dass ein einzelner Nutzer die gesamte Bandbreite beansprucht — diese Direktiven decken alle Fälle ab. Alles wird in der Nginx-Konfigurationsdatei eingestellt.

1. Begrenzung der gleichzeitigen Verbindungen

Definieren Sie zunächst im http-Block mithilfe von limit_conn_zone eine Zone im gemeinsamen Speicher. Hier verfolgt Nginx den Verbindungsstatus je Client-IP:

http {
    limit_conn_zone $binary_remote_addr zone=conn_limit_per_ip:10m;
}

Wenden Sie dann im entsprechenden location-Block das Limit an, indem Sie die Zone referenzieren und die maximale Anzahl gleichzeitiger Verbindungen pro IP festlegen:

location /download/ {
    limit_conn conn_limit_per_ip 5;
}

2. Begrenzung der Anfragerate

Verwenden Sie im http-Block limit_req_zone, um eine Zone zu definieren und eine zulässige Anfragerate festzulegen:

http {
    limit_req_zone $binary_remote_addr zone=req_limit_per_ip:10m rate=5r/s;
}

Referenzieren Sie im location-Block die Zone und legen Sie einen Burst-Puffer fest — also wie viele zusätzliche Anfragen in die Warteschlange kommen dürfen, bevor Nginx sie ablehnt:

location /download/ {
    limit_req zone=req_limit_per_ip burst=10;
}

Unsere Produkte und Dienste

WebhostingLäuft auf ultraschnellen NVMe-Laufwerken. Geeignet für Websites jeder Komplexität.
Bestellen
VPSFlexible Cloud-Infrastruktur mit vollem Root-Zugriff.
Bestellen
Dedizierte ServerBare-Metal-Server für maximale Leistung.
Bestellen

3. Begrenzung der Übertragungsgeschwindigkeit

Die Direktive limit_rate begrenzt die Antwortgeschwindigkeit in Byte pro Sekunde pro Verbindung. Zu beachten: Öffnet ein Client zwei Verbindungen gleichzeitig, verdoppelt sich sein effektiver Durchsatz.

location /download/ {
    limit_rate 50k;
}

Wenn Sie den ersten Datenteil zunächst mit voller Geschwindigkeit ausliefern möchten, bevor die Drosselung greift, kombinieren Sie die Direktive mit limit_rate_after:

location /download/ {
    limit_rate_after 1m;
    limit_rate 50k;
}

In diesem Beispiel wird das erste Megabyte mit voller Geschwindigkeit übertragen — danach greift Nginx mit dem Limit von 50 KB/s ein.

Hilfe

Bei Fragen oder wenn Sie Unterstützung brauchen, erreichen Sie uns jederzeit über das Ticketsystem — wir helfen Ihnen gern weiter!

Hilfe benötigt?Unsere Ingenieure helfen Ihnen kostenlos bei jeder Frage in wenigen MinutenKontaktieren Sie uns