Hallo zusammen,
Ich stoße auf ein spezifisches Problem, bei dem Videos, die größer als 5 MB sind, auf meiner Discourse-Instanz (Standard-Docker-Installation) keine Onebox-Vorschauen generieren, während dieselben Videolinks auf anderen Discourse-Seiten einwandfrei funktionieren.
Das Problem:
Wenn ich einen Videolink poste (z. B. eine 5,1 MB große .webm-Datei), schlägt die Onebox fehl. Ich habe das Problem auf ein Fehlschlagen bei der Aushandlung von Bereichsanfragen (Range request) eingegrenzt.
Debugging-Ergebnisse aus der Rails-Konsole:
- Manueller Ruby-Test (Erfolg): Bei Verwendung von Standard-
Net::HTTPund manueller Einstellung des HeadersRange: bytes=0-10erhalte ich erfolgreich einen 206 Partial Content vom Quellserver. - Discourse-Systemtest (Fehler): Wenn Discourse versucht, dieselbe URL über
FinalDestination.new(url).getabzurufen, erhält es anstelle eines 206 einen 200 OK (Net::HTTPOK). Folglich versucht es, die gesamte Datei herunterzuladen, stößt auf das Limit von 5 MB fürMAX_REQUEST_SIZE_BYTESund die Onebox schlägt mit einem Fehler wegen „Größe zu groß“ fehl.
Ich habe bereits die folgenden Konfigurationen getestet, aber das Problem besteht weiterhin:
- Festlegen eines Browser-ähnlichen Strings in
onebox_user_agent. - Hinzufügen der Quelldomäne zu
force_custom_user_agent_hosts. - Überprüfung, ob der Server keine globale Proxy-Konfiguration hat (
env | grep -i proxyist leer). - Testen derselben URL auf anderen Discourse-Instanzen, wo sie perfekt in Onebox angezeigt wird.
Die Frage:
Warum sollte eine Discourse-Instanz eine Bereichsanfrage (206) nicht aushandeln können, während eine andere Instanz, die auf exakt dieselbe URL zeigt, im selben Netzwerk erfolgreich ist?
Gibt es eine spezifische interne Konfiguration, Sicherheits-Middleware oder FinalDestination-Logik, die die Range-Header entfernt oder dazu führt, dass der entfernte Server auf eine vollständige 200er-Antwort zurückfällt?
Jede Einsicht oder jeder Hinweis, wo ich als Nächstes suchen soll, wäre sehr willkommen!