Hallo Discourse-Team,
ich betreibe einen nginx-Server auf meinem Host-Rechner und einen recht standardmäßigen Discourse-Container in Docker. Im Grunde werden einige wenige spezifische (HTTP-)Ordner vom Host-nginx bereitgestellt, während alles andere über proxy_pass an den Discourse-Container weitergeleitet wird.
Soweit ich das Problem verstehe, reicht es aus zu wissen, dass meine Host-nginx-Konfigurationsdatei einen Location /xyz definiert, der vom Host-nginx behandelt wird, und dass ein Location / definiert ist, der per proxy_pass an den Discourse-Container weitergeleitet wird.
Für meinen Anwendungsfall muss ich Links als Discourse-Beiträge posten, die auf my.domaiin.com/xyz/some.html verweisen, also Links innerhalb von Discourse, die auf Seiten verweisen, die vom Host-nginx bereitgestellt werden.
Das hat bis zum letzten Discourse-Update funktioniert. Jetzt führen Klicks auf die Links zur Discourse-Seite „Konnte nicht gefunden werden…“. Im Gegensatz dazu funktioniert das Kopieren der Linkziele und Öffnen in einem neuen Tab wie erwartet.
Ich habe ein gewisses Verständnis für Low-Level-Protokolle, aber je höher ich im Protokollstack komme, desto weniger weiß ich ![]()
Meine derzeitige Hypothese lautet, dass Discourse-nginx die Verbindung offen hält (Keepalive?), sodass der Host-nginx die Möglichkeit verpasst, den neuen Anforderungspfad zu analysieren und den richtigen Server auszuwählen. Die Anfragen der Verbindung werden so an den Container weitergeleitet, wie sie gehalten werden. Dann wird die Anfrage für den Pfad /xyz von Discourse beantwortet, das diesen Ordner nicht kennt.
Wie sollte ich dieses Problem angehen? Wenn es keine einfache Lösung gibt, wäre es bereits hilfreich, einige Hinweise zu erhalten, sogar eine gute Beschreibung im Hinblick auf fundiertes HTTP-Protokollwissen könnte helfen.
Vielen Dank!