Das gleiche Problem hier. Wir haben JS-Dateien, die in unserer eigenen Software ausgeführt werden, nichts, was jemals etwas in einem Browser tun würde.
Wir haben es geschafft, das Discourse-Download-Problem zu beheben, indem wir alle Uploads in einen S3-Bucket verschoben und s3_use_cdn_url_for_all_uploads auf true gesetzt haben. Dies umgeht im Wesentlichen den Short-URL-Controller, der anscheinend der Engpass für JS-Dateien ist.
Im Detail (von meiner KI, die mich dabei begleitet hat):
- S3-kompatiblen Speicher einrichten (z. B. Cloudflare R2)
Discourse kann .js-Dateien nicht sicher vom lokalen Datenträger bereitstellen. Verschieben Sie sie in einen Bucket.
-
Bucket: Erstellen Sie einen privaten Bucket (z. B.
my-discourse-bucket). -
API-Schlüssel: Generieren Sie einen Zugangs- und einen Geheimschlüssel.
2. Eine benutzerdefinierte CDN-Domain konfigurieren
Verbinden Sie in Cloudflare (oder Ihrem Anbieter) eine benutzerdefinierte Domain mit Ihrem Bucket (z. B. cdn.example.com). Dadurch werden Dateien als statische Assets über eine direkte URL bereitgestellt, wodurch die „Sicherheitswache" von Discourse umgangen wird.
3. Discourse-Einstellungen aktualisieren
Konfigurieren Sie in Admin → Einstellungen Ihre S3-Details. Wichtig: Aktivieren Sie Folgendes, um sicherzustellen, dass Discourse nicht versucht, die URLs mit temporären Headern zu „signieren", die Probleme verursachen können:
-
s3_use_cdn_url_for_all_uploads: Aktivieren Sie dieses Kontrollkästchen (Dies ist der wichtigste Schritt). -
s3_cdn_url: Aufhttps://cdn.example.comsetzen. -
s3_region: Verwenden Sieus-east-1(für R2-Kompatibilität).
4. Bestehende Uploads migrieren (optional)
Hinweis: Dies hat bei uns aus unbekannten Gründen nicht funktioniert.
Um alte Links in bestehenden Beiträgen zu beheben, geben Sie Ihren Container ein und führen Sie Folgendes aus:
Bash
# Innerhalb von /var/discourse
./launcher enter app
rake uploads:migrate_to_s3
rake posts:rebake
Hoffentlich hilft dies jemandem.