Rate Limiting in Nginx: API und Login-Endpunkte schützen

Rate Limiting schützt Webserver vor Überlastung durch zu viele Anfragen, bösartige Bots oder Brute-Force-Angriffe. Besonders sensible Endpunkte wie Login- oder API-Routen profitieren davon, um Serverressourcen zu schonen und Angriffe frühzeitig abzuwehren. In diesem Leitfaden lernen Einsteiger, IT-Studierende und Junior Network Engineers, wie Nginx Rate Limiting korrekt konfiguriert wird.

Grundlagen von Rate Limiting

Nginx ermöglicht die Begrenzung von Zugriffen pro IP-Adresse innerhalb eines definierten Zeitraums. Dabei werden zwei Hauptmodule verwendet:

  • limit_req_zone: Definiert den Speicherbereich für die Ratenkontrolle
  • limit_req: Wendet die Ratenbegrenzung auf spezifische Locations oder Server an

Installation und Voraussetzungen

  • Linux-Server mit Nginx installiert
  • Root- oder Sudo-Rechte
  • Firewall und Netzwerkkonfiguration geplant
  • Grundkenntnisse in Terminal und Texteditoren

Rate Limiting konfigurieren

Definition der Limit-Zone

Im Hauptblock von nginx.conf oder einer Serverkonfiguration wird die Zone definiert:

http {
    # Zone für 10MB Speicher pro IP
    limit_req_zone $binary_remote_addr zone=api_limit:10m rate=5r/s;
}
  • $binary_remote_addr: Identifiziert die Client-IP
  • api_limit:10m: Name der Zone und Speichergröße
  • rate=5r/s: Maximal 5 Anfragen pro Sekunde

Anwendung auf Endpunkte

Die definierte Zone wird auf bestimmte Locations angewendet:

server {
    listen 80;
    server_name example.com;

    location /api/ {
        limit_req zone=api_limit burst=10 nodelay;
        proxy_pass http://backend;
    }

    location /login {
        limit_req zone=api_limit burst=5 nodelay;
        proxy_pass http://backend;
    }
}
  • burst: Anzahl der kurzfristigen Überschreitungen erlaubt
  • nodelay: Sofortige Ablehnung bei Überschreitung

Monitoring und Logging

Nginx protokolliert abgelehnte Anfragen, sodass verdächtige Muster erkannt werden:

http {
    log_format rate_limit '$remote_addr - $status - $request_time';
    access_log /var/log/nginx/access.log rate_limit;
}

Anfragen, die das Limit überschreiten, erhalten HTTP-Status 503 oder 429, abhängig von der Konfiguration.

Erweiterte Optionen

  • Separate Zonen für unterschiedliche Endpunkte
  • Differentielle Rate Limits je nach IP oder User-Agent
  • Integration mit Fail2ban für automatische IP-Sperren
  • Bursts und Delays anpassen für API vs. Login-Seiten
  • Monitoring über Tools wie Grafana oder Prometheus

Netzwerk- und Subnetzplanung

In Multi-Server-Umgebungen sollten IP-Subnetze und Last-Balancer berücksichtigt werden, um konsistente Rate-Limits zu gewährleisten.

IPv4 Subnetz

<math>
Server-IP = 192.168.360.10/24
Subnetzadresse = 192.168.360.10 & 255.255.255.0 = 192.168.360.0
Broadcastadresse = 192.168.360.0 | ~255.255.255.0 = 192.168.360.255
</math>

IPv6 Subnetz

<math>
Server-IP = 2001:db8:abcd:360::10/64
Subnetzadresse = 2001:db8:abcd:360:: & ffff:ffff:ffff:ffff:: = 2001:db8:abcd:360::0
Broadcastadresse = 2001:db8:abcd:360:ffff:ffff:ffff:ffff
</math>

Best Practices

  • Login-Endpoints restriktiver limitieren als API-Endpunkte
  • Bursts nur für kurzzeitige Peaks erlauben
  • Logging aktivieren und regelmäßig prüfen
  • Fail2ban oder andere Security-Tools ergänzend nutzen
  • Separate Rate-Limits für interne und externe Clients definieren
  • Subnetze für Webserver und API-Server sauber planen
  • HTTP-Status für abgelehnte Anfragen festlegen (429 oder 503)
  • Testumgebung zur Überprüfung der Limits nutzen
  • Monitoring und Alerts für auffälligen Traffic einrichten
  • Regelmäßige Updates von Nginx und Modulen durchführen

Konfiguriere Cisco Router & Switches und liefere ein Packet-Tracer-Lab/GNS3

Ich biete professionelle Unterstützung im Bereich Netzwerkkonfiguration und Network Automation für private Anforderungen, Studienprojekte, Lernlabore, kleine Unternehmen sowie technische Projekte. Ich unterstütze Sie bei der Konfiguration von Routern und Switches, der Erstellung praxisnaher Topologien in Cisco Packet Tracer, dem Aufbau und Troubleshooting von GNS3- und EVE-NG-Labs sowie bei der Automatisierung von Netzwerkaufgaben mit Netmiko, Paramiko, NAPALM und Ansible. Kontaktieren Sie mich jetzt – klicken Sie hier.

Meine Leistungen umfassen:

  • Professionelle Konfiguration von Routern und Switches

  • Einrichtung von VLANs, Trunks, Routing, DHCP, NAT, ACLs und weiteren Netzwerkfunktionen

  • Erstellung von Topologien und Simulationen in Cisco Packet Tracer

  • Aufbau, Analyse und Fehlerbehebung von Netzwerk-Labs in GNS3 und EVE-NG

  • Automatisierung von Netzwerkkonfigurationen mit Python, Netmiko, Paramiko, NAPALM und Ansible

  • Erstellung von Skripten für wiederkehrende Netzwerkaufgaben

  • Dokumentation der Konfigurationen und Bereitstellung nachvollziehbarer Lösungswege

  • Konfigurations-Backups, Optimierung bestehender Setups und technisches Troubleshooting

Benötigen Sie Unterstützung bei Ihrem Netzwerkprojekt, Ihrer Simulation oder Ihrer Network-Automation-Lösung? Kontaktieren Sie mich jetzt – klicken Sie hier.

Related Articles