Ich versuche, Discourse in einem Docker-Container einzurichten. Die Host-Umgebung (Debian) läuft mit einem Apache httpd-Server (ich kann nginx nicht verwenden, da ich andere Websites auf Apache hoste). Ich möchte mod_proxy verwenden, um einen Reverse-Proxy zum Container einzurichten, der am Port 3000 lauscht.
Die aktuelle Apache-Konfiguration für diesen VirtualHost sieht wie folgt aus:
Ich habe mit nur den ProxyPass- und ProxyPassReverse-Direktiven begonnen und schrittweise ProxyPreserveHost sowie die RequestHeader-Direktiven hinzugefügt. Egal, wie ich den Proxy mit diesen Direktiven konfiguriere, bestimmte Dateien unterhalb des Dokumentenstamms liefern beim Aufruf einen 404-Fehler (zum Beispiel Inhalte in /images und /assets).
Beachten Sie den Kommentar mit der Discourse-Meta-URL, den ich von der nginx-Syntax in Apache-Syntax umgewandelt habe.
Irgendwelche Ideen, wie man das zum Laufen bringt, wären sehr willkommen!
Ich habe mich etwas genauer damit beschäftigt und glaube, dass ich das erreichen kann, was ich vor habe, da HAProxy Backends basierend auf dem vhost auswählen kann.
HAProxy erledigt genau das, was ich brauche, und sieht nach einem sehr ausgereiften und nützlichen Werkzeug aus. Danke für den Hinweis.
Allerdings scheint das Problem darin bestanden zu haben, dass die Templates/web*.yml bearbeitet wurden, um auf anderen Ports als den Standardports 80 und 443 zu lauschen. Ich habe die Standardkonfigurationen wiederhergestellt und dann containser/app.yml so bearbeitet, dass es Zeilen wie die folgenden enthält, und die 404-Fehler sind verschwunden:
Ich bin mit Traefik in letzter Zeit sehr zufrieden, und es vergibt Let’s Encrypt-Zertifikate automatisch (das geht auch mit HA-Proxy, ist aber etwas aufwendiger.)