Discourse implementiert globale Ratenbegrenzungen pro IP, um Websites vor übermäßigem Datenverkehr und Missbrauch zu schützen. Es gibt jedoch legitime Szenarien, in denen Sie bestimmte IPs auf eine Whitelist setzen müssen, um diese Ratenbegrenzungen zu umgehen. Diese Anleitung erklärt, wie Sie Ausnahmen für die Ratenbegrenzung bei selbst gehosteten Discourse-Installationen konfigurieren.
Hinzufügen von IP-Adressen zur Whitelist
Wenn Sie die globalen Ratenbegrenzungen pro IP für bestimmte IPs oder IP-Bereiche erhöhen müssen, müssen Sie Ihre Container-Konfigurationsdatei (app.yml) ändern, indem Sie die Umgebungsvariable DISCOURSE_MAX_REQS_PER_IP_EXCEPTIONS hinzufügen.
Warnung: Denken Sie daran, dass die Variable, obwohl sie „IP“ heißt, eigentlich „Bucket“ bedeutet und daher eine IP, ein Benutzer oder etwas anderes sein kann, wenn eine neue Klassifizierung von einem Plugin hinzugefügt wird.
Hinzufügen einer einzelnen IP-Adresse
Um eine einzelne IP-Adresse zu Ihrer Whitelist hinzuzufügen:
DISCOURSE_MAX_REQS_PER_IP_EXCEPTIONS: 192.168.1.100
Dadurch wird die IP-Adresse 192.168.1.100 von den Standardregeln zur Ratenbegrenzung ausgenommen.
Hinzufügen mehrerer IP-Adressen oder CIDR-Bereiche
Für mehrere IPs oder IP-Bereiche mit CIDR-Notation verwenden Sie das mehrzeilige Format mit der YAML-Syntax >-:
DISCOURSE_MAX_REQS_PER_IP_EXCEPTIONS: >-
10.0.0.0/24
172.16.10.0/16
192.168.1.50
2001:db8:c0:ffee::/64
Diese Konfiguration schließt aus:
- das gesamte Netzwerk
10.0.0.0/24(256 IP-Adressen) - das gesamte Netzwerk
172.16.10.0/16(65.536 IP-Adressen) - die einzelne IP-Adresse
192.168.1.50 - das gesamte Netzwerk
2001:db8:c0:ffee::/64(IPv6)
Stellen Sie die korrekte YAML-Formatierung sicher, insbesondere bei der Verwendung der mehrzeiligen Syntax mit
>-.
Neu erstellen
Nachdem Sie die Container-Konfiguration geändert haben, müssen Sie den Container neu erstellen, damit die Änderungen wirksam werden:
cd /var/discourse
./launcher rebuild app
Sicherheitsaspekte
Seien Sie vorsichtig, wenn Sie IP-Adressen zur Whitelist hinzufügen. Jede ausgenommene IP oder jeder ausgenommene Bereich umgeht den integrierten Schutz von Discourse vor Missbrauch und übermäßigem Datenverkehr.
Best Practices:
- Fügen Sie nur IPs auf die Whitelist, die einen legitimen geschäftlichen Bedarf haben (z. B. Überwachungsdienste, API-Integrationen, vertrauenswürdige Partner).
- Verwenden Sie die spezifischsten IP-Bereiche, anstatt große Netzwerke.
- Überprüfen Sie regelmäßig Ihre Whitelist und entfernen Sie IPs, die keine Ausnahme mehr benötigen.
Denken Sie daran: Eine zu permissive Whitelist kann Ihre Website potenziellen Missbrauchs- oder Denial-of-Service-Szenarien aussetzen.
Fehlerbehebung
Wenn Sie weiterhin Ratenbegrenzungsmeldungen erhalten, obwohl Sie Ausnahmen konfiguriert haben:
- Stellen Sie sicher, dass die korrekten IP-Adressen in Ihrer Konfiguration verwendet werden.
- Überprüfen Sie, ob der Container nach der Konfigurationsänderung ordnungsgemäß neu erstellt wurde.
- Untersuchen Sie die Discourse-Protokolle auf Ratenbegrenzungsmeldungen, die sich auf die betreffenden IPs beziehen.
- Wenn Sie einen Proxy/Load Balancer verwenden, stellen Sie sicher, dass dieser die ursprüngliche Client-IP korrekt weiterleitet.