Nous exécutons précédemment une configuration multisite Discourse avec environ 22 forums différents. Récemment, nous avons décidé de supprimer la configuration multisite et de ne conserver que le site par défaut :
Site par défaut maintenant :forum.mamapedia.com Ancien domaine multisite supprimé :forum.employ.com (et 21 autres)
Le Problème :
Même après avoir désactivé la configuration multisite, les anciens domaines multisite peuvent toujours servir le forum par défaut (forum.mamapedia.com). Par exemple :
Visiter forum.mamapedia.com fonctionne comme prévu
Mais visiter forum.employ.com charge toujours le forum Mamapedia
Nous nous attendions à ce que les anciens domaines comme forum.employ.com :
Affichent une erreur (puisqu’ils ne sont plus configurés)
Redirigent correctement ou soient complètement inactifs
Notes de Configuration :
Nous utilisons les certificats SSL de Cloudflare avec l’option proxy activée (le trafic ne passe pas directement par notre serveur).
Nous pouvons supprimer les enregistrements A pour les anciens domaines, mais nous voulons vraiment identifier et corriger la cause profonde au lieu de nous fier à une solution de contournement basée sur le DNS.
Étapes Suivies Jusqu’à Présent :
Suppression des paramètres multisite de discourse.conf et de la base de données
Redémarrage de Discourse et vérification des paramètres app.yml
Vidage du cache et test en mode incognito
Comportement Attendu :
forum.mamapedia.com devrait continuer à fonctionner
forum.employ.com et les autres anciens domaines ne devraient pas servir le forum Mamapedia
Questions :
Comment pouvons-nous supprimer correctement les anciens domaines afin qu’ils ne servent plus le forum par défaut ?
Devons-nous ajuster les paramètres Nginx/Traefik, les paramètres Cloudflare, ou y a-t-il une configuration spécifique à Discourse que nous avons manquée ?
Vous devez passer à une installation standard. Ce que vous avez fait pour rendre cela multisite, c’est pour permettre au serveur de servir plusieurs domaines.
Si vous créez un nouveau serveur et restaurez la sauvegarde, vous ne pouvez rien casser puisque vous reviendrez simplement à l’ancien.
Le seul problème, c’est que vous devez diriger le DNS vers le nouveau serveur pendant que vous le reconstruisez afin qu’il puisse obtenir un certificat. Et configurez Cloudflare DNS en mode uniquement.
Merci @pfaffman , Nous avons tenté de passer d’une configuration multisite à une installation standard, mais le problème persiste.
Ce que nous avons fait :
Suppression de l’installation Discourse :
Suppression complète du répertoire /var/discourse.
Réinstallation de Discourse :
Clonage à nouveau du dépôt Discourse.
Recréation de app.yml avec les configurations nécessaires.
Reconstruction de l’application :
Exécution de ./launcher rebuild app.
Mise à jour du DNS :
Pointage du domaine vers le nouveau serveur.
Mise de Cloudflare en mode DNS-only pour permettre l’émission du certificat SSL.
Problème supplémentaire avec le SSL :
Lorsque nous avons activé le SSL dans app.yml et désactivé le proxy Cloudflare, nous avons rencontré le problème suivant, même après avoir activé le SSL.
La raison pour laquelle cela se produit est simple. Multisite sélectionnera un forum en fonction du nom d’hôte. Une installation non multisite acceptera volontiers le nom d’hôte auquel vous la pointez. Ainsi, tant que vous aurez tous les anciens noms d’hôte dirigés vers cette installation, elle servira le site restant sur tous ces noms d’hôte.
Avoir les anciens enregistrements pointant vers votre site est la cause profonde.
Nettoyer votre ancienne configuration n’est pas une solution de contournement, c’est la solution.
OMG. Je ne me souviens pas de la dernière fois que j’ai été en désaccord avec vous sur un fait. En règle générale, lorsque je vois votre avatar dans un sujet sur lequel j’ai commenté, je sais que je vais apprendre quelque chose !
C’est vrai. Ils prétendent cependant être passés à une installation standard. Je ne les crois pas.
Depuis plusieurs années maintenant (mais je pense depuis que Let’s Encrypt est disponible), sur une installation standard, si vous y accédez via un autre nom d’hôte, elle effectuera une redirection (vous pouvez facilement vérifier en utilisant le numéro IP et je viens d’en faire une autre en configurant forum.bigmouth.bass dans /etc/hosts vers une installation standard et elle a redirigé comme prévu. Si vous y accédez via https, ce que la plupart des navigateurs font par défaut maintenant, vous obtiendrez une erreur de certificat.
Si tout ce qui était nécessaire pour accéder à votre site via un autre nom d’hôte était le DNS, alors n’importe qui pourrait détourner votre site en créant un enregistrement DNS pointant vers votre site.
Je pense que c’est la magie :
Je suppose que le app.yml contient encore quelque chose comme ceci :
Eh bien, j’apprends aujourd’hui que je devrais mettre à jour mes faits plus souvent ! Ce code est là depuis 2014, donc je suppose que je vivais dans le passé.
Nous avons vérifié app.yml, et il n’y a pas de configurations de redirection personnalisées ni de overrides. Cependant, notre instance ne redirige toujours pas les noms d’hôtes inconnus vers le domaine principal.
Configuration Nginx : Existe-t-il un moyen de vérifier si la logique de redirection du fichier templates/web.ssl.template.yml est réellement appliquée ? Faut-il vérifier manuellement la configuration Nginx générée à l’intérieur du conteneur ?
Débogage de Discourse : Y a-t-il des logs ou des commandes que nous pouvons exécuter à l’intérieur du conteneur pour confirmer que Discourse gère correctement les noms d’hôtes ?
Autres causes potentielles : Si app.yml est propre, qu’est-ce qui pourrait empêcher le comportement de redirection attendu ? Est-ce que Cloudflare ou un autre paramètre pourrait interférer ?
Nous apprécierions toute indication pour approfondir cette investigation !
Les anciens domaines ont-ils tous le nuage orange activé ? Le fait de ne pas utiliser le nuage orange résout-il le problème ? Si c’est le cas, comme je l’ai toujours pensé, Richard a raison et vous devez nettoyer votre configuration.
Mais si l’utilisation de Cloudflare permet à un acteur malveillant (vous dans ce cas) de servir le site de quelqu’un d’autre sur son domaine, cela semble être un problème.
Nous avons déjà supprimé les anciens domaines, mais oui, ils avaient le bouton orange activé. Le problème maintenant est que si quelqu’un obtient notre adresse IP de serveur et un enregistrement là-bas avec l’option proxy activée, il servira notre site avec son domaine.
Vous devriez exécuter discourse-setup pour vous assurer que vous avez bien une installation standard. Si vous collez votre ancien app.yml, il se peut que vous ayez quelque chose dedans qui n’a pas sa place. Je ne suis toujours pas tout à fait convaincu que vous ayez une configuration standard.
Je ne suis toujours pas convaincu que ce soit le cas, mais si c’est le cas, vous ne pouvez rien y faire.
Je tiens vraiment à vous remercier @pfaffman@RGJ, maintenant c’est propre et presque bon
Le problème que nous rencontrons maintenant est que toutes les images de marque ont disparu, ainsi que certaines images d’utilisateurs.
Les données de marque sont correctes, je peux les télécharger depuis l’ancien serveur, mais qu’en est-il des images des utilisateurs et de toutes les images du site qui manquent également
Hmm. Eh bien, si c’était le site principal, je m’attendrais à ce que ce chemin soit https://forum.mamapedia.com/user_avatar/forum.mamapedia.com/jakeatgetit/24/5872_2.png, mais cela ne fonctionne pas non plus.
Si vous avez encore l’ancien site, je ferais une sauvegarde de celui-ci et la restaurerais sur le nouveau site.
Merci @pfaffman, ce que j’ai fait jusqu’à présent semble fonctionner.
Je suis allé sur l’ancien serveur et j’ai déplacé les données de /var/discourse/shared/standalone/uploads/default vers le même chemin sur le nouveau serveur, et tous les avatars et messages des utilisateurs sont revenus.
Le nouveau problème est que la personnalisation du site ne fonctionne pas, même si j’essaie de la mettre à jour.
Je reviens ici pour voir si quelqu’un a des idées. Nous sommes très proches de clore ce dossier de notre côté, nous avons juste besoin d’aide pour résoudre le problème de la sauvegarde sans logo. Merci d’avance pour toutes les idées de résolution !