Anhänge werden lokal auf dem Server bedient, aber nicht öffentlich

Problemübersicht

Ich erhalte einen 404-Fehler, wenn ich über die URL auf einen Bild-Upload auf der Live-Discourse-Seite (https://techenclave.com) zugreife, obwohl das Bild auf der Festplatte vorhanden ist und intern korrekt ausgeliefert wird. Ich habe den Beitrag neu gebacken, die Anwendung neu gestartet und überprüft, ob die interne Auslieferung funktioniert, aber extern wird immer noch ein 404 angezeigt.


Was funktioniert

1. Upload existiert in der DB

Über die Rails-Konsole habe ich bestätigt, dass der Upload mit allen korrekten Metadaten vorhanden ist:

Upload.find_by(sha1: 'a8fbe877e685e6a6994532c946c446b1279da7d2')

Ausgabe beinhaltet:

  • url: \"/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg\"
  • Dateiname: IMG202506252257011.jpg
  • ID: 170265
  • Verwendet in Beitrag-ID: 3125774

2. Datei existiert auf der Festplatte

Überprüft, ob die Datei im Container vorhanden ist:

ls -l /shared/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

:check_mark: Datei existiert mit korrektem Eigentümer und Berechtigungen:
discourse:www-data, -rw-r--r--.


3. Symlink vom öffentlichen Ordner funktioniert

Der Symlink public/uploads ist intakt:

ls -l /var/www/discourse/public/uploads
# => /shared/uploads

4. Discourse kann es intern ausliefern

Getestet mit:

curl -I http://localhost:3000/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

Ergebnis: HTTP/1.1 200 OK


5. Beitrag neu gebacken

Den Beitrag neu gebacken mit:

Post.find(3125774).rebake!

6. Anwendung neu gestartet

Ausgeführt:

./launcher restart app

Auch versucht:

sudo ./launcher rebuild app

(Der Docker-Daemon war vorübergehend nicht verfügbar, wurde aber später behoben.)


Was nicht funktioniert

Externer Zugriff auf das Bild

Zugriff auf:

https://techenclave.com/uploads/default/original/3X/a/8/a8fbe877e685e6a6994532c946c446b1279da7d2.jpeg

Gibt zurück:

404 Not Found

Dies geschieht in allen Browsern und im Inkognito-Modus.


Womit ich Hilfe brauche

Kann jemand helfen zu identifizieren, was Folgendes verursachen könnte:

  • Ein funktionierender Upload, der über localhost:3000 ausgeliefert wird,
  • aber extern unter der öffentlichen Domain einen 404 zurückgibt?

Was sollte ich noch überprüfen? Gibt es zugehörige Konfigurationen oder Protokolle, die ich untersuchen sollte?

Vielen Dank im Voraus!

Selbst neu hochgeladene Bilder werden nicht geladen. Erhalte 404

Ich nehme an, das ist keine Standardinstallation? Das ist hier größtenteils alles, was unterstützt wird.

Wie haben Sie Discourse installiert?

1 „Gefällt mir“

Vielleicht erwähnen Sie beim nächsten Mal, dass Sie erst kürzlich migriert sind?

Haben Sie diese Anleitung befolgt, als Sie von temp.techenclave.com zu techenclave.com gewechselt sind?

2 „Gefällt mir“

Danke.

Die Installation erfolgte nach einer Standardanleitung für Discourse auf GitHub.

Ja, ich habe eine lokale Migration auf meinem Laptop durchgeführt, ein Backup erstellt und das Backup auf dem Server wiederhergestellt, indem ich die Datei hochgeladen und eine Backup-Wiederherstellung über das Admin-Panel vorgenommen habe. Das hätte ich nicht tun sollen, da nicht alle Anhangsdateien wiederhergestellt wurden, obwohl es erfolgreich angezeigt wurde. Ich habe trotzdem ein rsync der Dateien von der lokalen Installation auf dem Laptop auf den Server durchgeführt, um sie auf den neuesten Stand zu bringen.

Als Nächstes erfolgte eine Domain-Migration, wie Sie richtig bemerkt haben, von temp zu root, nachdem das Setup einen Tag lang getestet wurde.

Der Grund, warum ich das oben nicht erwähnt habe, ist, dass selbst die neuesten Dateien, die nach all den oben genannten Aktivitäten hochgeladen wurden, ebenfalls nicht angezeigt werden. Trotz eines Rebuilds. Daher fand ich diese Information nicht relevant.

Nein, ich bin dieser Anleitung nicht gefolgt. Aber wenn ich sie mir ansehe, sehe ich, dass nur die folgenden Schritte relevant waren:

  1. Die alte Domain wird in der Liste der erlaubten iframes zusammen mit der neuen Domain in den Einstellungen angezeigt.
  2. Remapping der Domain in Beiträgen, was ich sowieso später tun wollte, einschließlich eines Re-Bakes, sobald dieses Problem behoben ist. Der betreffende Beitrag wurde neu gebacken und hat nicht die alte Domain in der URL des Bildes.

Sind diese beiden Punkte relevant?

This topic was automatically closed 30 days after the last reply. New replies are no longer allowed.