APIs (Application Programming Interfaces) sind entscheidende Schnittstellen, die die Interaktion zwischen Ihren Systemen, Anwendungen und Diensten ermöglichen. Öffentlich zugängliche oder für interne Netzwerke offene APIs können jedoch anfällig für Missbrauch sein. Rate Limiting hilft, APIs zu schützen, indem die Anzahl der Anfragen, die ein Benutzer oder eine IP-Adresse in einem bestimmten Zeitraum stellen kann, begrenzt wird.
Warum Rate Limiting für APIs verwenden?
- Minderung von Angriffen: Rate Limiting verringert die Auswirkungen von Denial-of-Service-Angriffen (DoS/DDoS) und Brute-Force-Versuchen zum Erraten von Passwörtern.
- Ressourcenverwaltung: Verhindert, dass einzelne Benutzer Ihre Serverressourcen überlasten, wodurch die Leistung für alle Benutzer gewährleistet wird.
- Zugangskontrolle: Kann zur Implementierung von gestaffelten Zugriffsebenen (Tiers) oder nutzungsabhängigen Bezahlmodellen verwendet werden.
Wie Rate Limiting mit Nginx funktioniert
Nginx verwendet einen „Leaky Bucket” (undichter Eimer) Algorithmus, um das Rate Limiting umzusetzen. Eingehende Anfragen werden mit einer festen Rate verarbeitet. Wenn das Volumen die festgelegte Rate übersteigt, werden überschüssige Anfragen in einem Puffer gespeichert. Die Anfragen werden der Reihe nach bearbeitet, und wenn der Puffer überläuft, werden neue Anfragen verworfen, bis wieder Platz frei wird.
Konfiguration von Rate Limiting in Nginx
So richten Sie das grundlegende Rate Limiting in Nginx ein:
- Definieren Sie das Anfragelimit: Öffnen Sie
nginx.conf
(meist unter/etc/nginx/nginx.conf
). Fügen Sie imhttp
-Block folgende Direktiven hinzu:
limit_req_zone $binary_remote_addr zone=mylimit:10m rate=10r/s;
Dies erstellt eine Zone namens “mylimit” mit einer Größe von 10 MB (ausreichend für ~160.000 IP-Adressen) und begrenzt Anfragen auf eine Rate von 10 pro Sekunde.
- Wenden Sie die Begrenzung auf einen Ort an: Fügen Sie im
server
-Block Ihrer Nginx-Konfiguration Folgendes hinzu:
location /api/ {
limit_req zone=mylimit;
}
Dadurch wird die Zone “mylimit” auf Anfragen an den Endpunkt /api/
angewendet.
- Antwort auf übermäßige Anfragen (optional): Legen Sie fest, wie mit unzulässigen Anfragen umgegangen werden soll:
nginx
limit_req_status 429; # Liefert einen HTTP 429-Fehler (Too Many Requests)
Nginx testen und neu starten:
bash
sudo nginx -t # Konfiguration prüfen
sudo systemctl restart nginx
```
Erweiterte Optionen
Nginx bietet Flexibilität bei der Anpassung des Rate Limiting:
burst
-Direktive: Definiert einen temporären Puffer, um kurzzeitige Anfragespitzen über der festgelegten Rate abzufangen.nodelay
-Direktive: In Kombination mitburst
werden legitime Anfragen innerhalb des Limits plus der Puffergröße (burst
) ohne Verzögerung verarbeitet.- Alternative Schlüssel: Anstelle der reinen IP-Adresse können Sie komplexere Schlüssel mit Nginx-Variablen definieren, um granularere Limits zu setzen.
Shape.host Dienste
Die Cloud VPS von Shape.host bieten eine leistungsstarke und skalierbare Hosting-Umgebung für Ihre Nginx-Lösungen. Hochleistungs-SSD-Speicher und erweiterte Sicherheitsoptionen tragen dazu bei, die Verfügbarkeit und Leistung Ihrer APIs zu sichern.