Bonjour l’équipe Discourse,
Je fais tourner un serveur nginx sur ma machine hôte et un conteneur Discourse assez standard dans Docker. En gros, j’ai un petit nombre de dossiers spécifiques (http) servis par nginx sur l’hôte, et tout le reste est transféré vers le conteneur Discourse via proxy_pass.
Pour comprendre le problème, il suffit de savoir que mon fichier de configuration nginx sur l’hôte définit un emplacement /xyz, géré par nginx sur l’hôte, puis un emplacement / qui est défini pour être proxy_passé vers le conteneur Discourse.
Pour mon cas d’usage, je dois publier des liens en tant que messages Discourse pointant vers my.domaiin.com/xyz/some.html, c’est-à-dire que les liens à l’intérieur de Discourse pointent vers des pages servies par nginx sur l’hôte.
Cela fonctionnait jusqu’à la dernière mise à jour de Discourse. Maintenant, cliquer sur les liens aboutit à la page Discourse « impossible de trouver… ». En revanche, copier les cibles des liens et les ouvrir dans un nouvel onglet fonctionne comme prévu.
Je possède une bonne compréhension des protocoles de bas niveau, mais plus on monte dans la pile protocolaire, moins je connais ![]()
Mon hypothèse actuelle est que Discourse nginx maintient la connexion ouverte (keepalive ?), de sorte que nginx sur l’hôte rate l’opportunité d’analyser le nouveau chemin de requête pour sélectionner le bon serveur. Les requêtes de la connexion sont transmises au conteneur tel quel et restent actives. Ensuite, la requête pour le chemin /xyz est répondue par Discourse, qui ne connaît pas ce dossier..
Comment devrais-je aborder ce problème ? S’il n’y a pas de solution simple, il serait déjà utile d’obtenir quelques pistes, même une bonne description par rapport à une connaissance décente du protocole HTTP pourrait aider.
Merci !