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
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!