Je tente de configurer Discourse dans un conteneur Docker. L’environnement hôte (Debian) exécute un serveur Apache httpd (je ne peux pas utiliser nginx car j’héberge d’autres sites sur Apache). Je souhaite utiliser mod_proxy pour faire un reverse-proxy vers le conteneur, qui écoute sur le port 3000.
La configuration actuelle d’Apache pour ce vhost est la suivante :
J’ai commencé uniquement avec les directives ProxyPass et ProxyPassReverse, puis j’ai ajouté ProxyPreserveHost et les directives RequestHeader une par une. Peu importe comment je configure le proxy avec ces directives, certains fichiers situés sous la racine du document renvoient une erreur 404 lors de l’accès (par exemple, des éléments dans /images et /assets).
Notez le commentaire contenant l’URL de Discourse Meta que j’ai convertie de la syntaxe nginx vers Apache.
Toute suggestion sur la manière de faire fonctionner cela serait grandement appréciée !
J’ai regardé un peu plus en détail cette question et je pense pouvoir réaliser ce que je souhaite, car il semble que HAProxy puisse sélectionner les backends en fonction du vhost.
HAProxy fait exactement ce que je recherche et semble être un outil très abouti et utile. Merci pour l’indication.
Cependant, il semble que l’édition des fichiers templates/web*.yml pour écouter sur des ports autres que les valeurs par défaut 80 et 443 ait été la source du problème. J’ai restauré les configurations par défaut, puis j’ai édité containser/app.yml en ajoutant des lignes similaires à celles-ci, et les erreurs 404 ont disparu :
Je suis vraiment satisfait de Traefik récemment, et il gère automatiquement les certificats Let’s Encrypt (vous pouvez aussi le faire avec HA-Proxy, mais c’est un peu plus fastidieux).