Ich ziehe eine bestehende Discourse-Instanz von ihrem aktuellen Standort auf eine AWS EC2-VM um.
Die Website befindet sich hinter Amazon Load Balancern. Ich habe bereits erfolgreich die set_real_ip_from-Direktiven in app.yml angepasst, damit NGINX die IPs des Load Balancers kennt. Ich weiß, dass dies funktioniert, da ich meine echte IP-Adresse sehe, wenn ich die letzte IP eines Benutzers überprüfe.
Wenn ich jedoch versuche, das 375 MB große Backup vom alten Server hochzuladen, beginnt die neue Website, 429-Fehler auszugeben, wenn die Datei etwa zu 35 % hochgeladen ist, und der Upload-Vorgang schlägt fehl. Die Header in den 429-Antworten identifizieren “discourse-rate-limit-error-code: id_10_secs_limit”.
Das fand ich überraschend. Ich hatte das Entwicklertools-Fenster meines Browsers im Tab “Netzwerk” geöffnet und sah viele kleine Chunks, die ziemlich schnell hochgeladen wurden (ich glaube, es waren 5 MB). Ich habe eine schnelle 200-Mbit/s-Internetverbindung, also ist es vielleicht einfach zu schnell für die Standardeinstellungen des Ratenbegrenzers? Oder vielleicht wurde erwartet, dass Administratoraufgaben normalerweise von einem privaten Netzwerk aus erledigt werden (was in meinem AWS-Setup nicht möglich ist)?
Aber warten Sie, es gibt noch mehr! Ich habe versucht, den Ratenbegrenzer zu deaktivieren, indem ich die Zeile “templates/web.ratelimited.template.yml” aus app.yml auskommentiert und die App neu erstellt habe, aber das hat nicht funktioniert. Ich erhielt immer noch 429-Fehler, als meine Datei etwa zu 35 % hochgeladen war.
Also habe ich schnell die untenstehenden Umgebungsvariablen zur app.yml-Datei hinzugefügt, neu erstellt und konnte endlich das Backup zum Wiederherstellen hochladen.
DISCOURSE_MAX_REQS_PER_IP_MODE: none
DISCOURSE_MAX_REQS_PER_IP_PER_10_SECONDS: 1000
Ich glaube, das sind Einstellungen für den Ratenbegrenzer, daher war es seltsam, etwas zu sehen, das auf diese Einstellungen reagierte, obwohl der Ratenbegrenzer angeblich deaktiviert war.
Fazit: Ich hätte gerne einige Hinweise dazu:
- Sollte der Ratenbegrenzer Backup-Uploads auf diese Weise blockieren?
- Warum wurde der Ratenbegrenzer nicht deaktiviert, als ich diese Zeile auskommentiert und die App neu erstellt habe?
Danke!