Wir haben zuvor ein Discourse-Multisite-Setup mit rund 22 verschiedenen Foren betrieben. Kürzlich haben wir uns entschieden, die Multisite-Konfiguration zu entfernen und nur die Standard-Site beizubehalten:
Standard-Site jetzt:forum.mamapedia.com Entfernte alte Multisite-Domain:forum.employ.com (und 21 weitere)
Das Problem:
Selbst nach der Deaktivierung des Multisite-Setups können die alten Multisite-Domains immer noch das Standardforum (forum.mamapedia.com) bereitstellen. Zum Beispiel:
Der Besuch von forum.mamapedia.com funktioniert wie erwartet.
Aber der Besuch von forum.employ.com lädt immer noch das Mamapedia-Forum.
Wir hatten erwartet, dass alte Domains wie forum.employ.com entweder:
Einen Fehler anzeigen (da sie nicht mehr konfiguriert sind).
Korrekt weiterleiten oder vollständig inaktiv sein würden.
Setup-Hinweise:
Wir verwenden SSL-Zertifikate von Cloudflare mit aktivierter Proxy-Option (der Traffic geht nicht direkt an unseren Server).
Wir können die A-Records für die alten Domains entfernen, aber wir möchten die Grundursache identifizieren und beheben, anstatt uns auf eine DNS-basierte Umgehung zu verlassen.
Bisherige Schritte:
Multisite-Einstellungen aus discourse.conf und der Datenbank entfernt.
Discourse neu gestartet und die app.yml-Einstellungen überprüft.
Cache geleert und im Inkognito-Modus getestet.
Erwartetes Verhalten:
forum.mamapedia.com sollte weiterhin funktionieren.
forum.employ.com und andere alte Domains sollten das Mamapedia-Forum nicht bereitstellen.
Fragen:
Wie können wir die alten Domains ordnungsgemäß entfernen, damit sie nicht das Standardforum bereitstellen?
Müssen wir Nginx/Traefik-Einstellungen, Cloudflare-Einstellungen anpassen oder gibt es eine Discourse-spezifische Konfiguration, die wir übersehen haben?
Sie müssen auf eine Standardinstallation umstellen. Die Änderungen, die Sie vorgenommen haben, um es multisite-fähig zu machen, ermöglichen es dem Server, mehrere Domains zu bedienen.
Wenn Sie einen neuen Server erstellen und das Backup wiederherstellen, können Sie nichts kaputt machen, da Sie einfach wieder zum alten Server wechseln können.
Der einzige Haken ist, dass Sie die DNS auf den neuen Server verweisen müssen, während Sie ihn neu aufbauen, damit ein Zertifikat ausgestellt werden kann. Und machen Sie DNS nur über Cloudflare.
Der Grund, warum dies passiert, ist ganz einfach. Multisite wählt ein Forum basierend auf dem Hostnamen aus. Eine Nicht-Multisite-Installation akzeptiert gerne jeden Hostnamen, auf den Sie zeigen. Solange Sie also alle alten Hostnamen auf diese Installation umleiten, wird die verbleibende Seite auf all diesen Hostnamen angezeigt.
[Zitat=“Abdelrahman MoHamed, Beitrag: 1, Thema: 351365, Benutzername: Abdelrahman_MoHamed”]
Wir können die A-Datensätze für die alten Domains entfernen, aber wir möchten wirklich die Ursache identifizieren und beheben, anstatt uns auf eine DNS-basierte Zwischenlösung zu verlassen.
[/Zitat]
Dass die alten Einträge auf Ihre Seite verweisen, ist die Ursache.
Das Aufräumen Ihrer alten Konfiguration ist keine Zwischenlösung, sondern die Lösung.
OMG. Ich kann mich nicht erinnern, wann ich das letzte Mal mit Ihnen in einer Sachfrage nicht einer Meinung war. Normalerweise weiß ich, wenn ich Ihren Avatar in einem Thema sehe, zu dem ich etwas geschrieben habe, dass ich etwas lernen werde!
Das stimmt. Sie behaupten jedoch, dass sie zu einer Standardinstallation gewechselt sind. Ich glaube ihnen nicht.
Seit mehreren Jahren (aber ich glaube, seit Let’s Encrypt verfügbar ist) leitet eine Standardinstallation bei Zugriff über einen anderen Hostnamen weiter (Sie können dies leicht überprüfen, indem Sie die IP-Nummer verwenden, und ich habe gerade eine weitere durchgeführt, indem ich forum.bigmouth.bass in /etc/hosts auf eine Standardinstallation gesetzt habe, und es wurde wie erwartet weitergeleitet. Wenn Sie über HTTPS darauf zugreifen, was die meisten Browser jetzt standardmäßig tun, erhalten Sie einen Zertifikatsfehler.
Wenn alles, was erforderlich war, um auf Ihre Website über einen anderen Hostnamen zuzugreifen, DNS war, dann könnte jeder Ihre Website kapern, indem er einen DNS-Eintrag erstellt, der auf Ihre Website verweist.
Ich glaube, das ist die Magie:
Ich vermute, dass app.yml immer noch etwas wie das hier enthält:
Wir haben app.yml überprüft, und es gibt keine benutzerdefinierten Weiterleitungskonfigurationen oder Overrides. Unser Instance leitet jedoch immer noch keine unbekannten Hostnamen auf die Hauptdomain um.
Nginx-Konfiguration: Gibt es eine Möglichkeit zu überprüfen, ob die Weiterleitungslogik aus templates/web.ssl.template.yml tatsächlich angewendet wird? Sollten wir die generierte Nginx-Konfiguration im Container manuell überprüfen?
Discourse-Debugging: Gibt es Logs oder Befehle, die wir im Container ausführen können, um zu bestätigen, dass Discourse Hostnamen korrekt verarbeitet?
Andere mögliche Ursachen: Wenn app.yml sauber ist, was könnte sonst den erwarteten Weiterleitungsprozess verhindern? Könnten Cloudflare oder eine andere Einstellung eingreifen?
Wir würden uns über Hinweise freuen, um tiefer zu graben!
Haben alle alten Domains die orangefarbene Wolke aktiviert? Löst das Deaktivieren der orangefarbenen Wolke das Problem? Wenn ja, dann hat Richard, wie ich schon immer erwartet habe, Recht und Sie müssen Ihr Setup bereinigen.
Wenn Cloudflare es jedoch einem böswilligen Akteur (in diesem Fall Ihnen) ermöglicht, die Website eines anderen unter dessen Domain zu hosten, scheint das ein Problem zu sein.
Wir haben bereits alte Domains entfernt, aber ja, sie hatten den orangefarbenen Button aktiviert. Das Problem ist jetzt, dass, wenn jemand unsere Server-IP und einen A-Record mit aktivierter Proxy-Option erhält, unsere Website mit deren Domain bedient wird.
Sie sollten discourse-setup ausführen, um sicherzustellen, dass Sie wirklich eine Standardinstallation haben. Wenn Sie Ihre alte app.yml einfügen, könnten Sie etwas darin haben, das nicht dorthin gehört. Ich bin immer noch nicht ganz davon überzeugt, dass Sie eine Standardkonfiguration haben.
Ich bin immer noch nicht davon überzeugt, dass dies der Fall ist, aber wenn es so ist, können Sie nichts dagegen tun.
Ich möchte mich wirklich bei Ihnen @pfaffman@RGJ bedanken, jetzt ist es sauber und fast gut.
Das Problem, mit dem wir jetzt konfrontiert sind, ist, dass alle Branding-Bilder verschwunden sind und dasselbe gilt für einige Benutzerbilder.
Die Branding-Daten sind in Ordnung, ich kann sie vom alten Server herunterladen, aber was ist mit den Benutzerbildern und allen Website-Bildern, die ebenfalls fehlen?
Hmm. Nun, wenn es die Hauptseite wäre, würde ich erwarten, dass dieser Pfad https://forum.mamapedia.com/user_avatar/forum.mamapedia.com/jakeatgetit/24/5872_2.png lautet, aber das funktioniert auch nicht.
Wenn Sie noch die alte Seite haben, würde ich ein Backup davon erstellen und es auf der neuen Seite wiederherstellen.
Danke @pfaffman, was ich bisher getan habe, scheint zu funktionieren.
Ich habe mich in den alten Server eingeloggt und die Daten von /var/discourse/shared/standalone/uploads/default auf denselben Pfad auf dem neuen Server verschoben, und alle Benutzeravatare und Beiträge sind zurückgekehrt.
Das neue Problem ist, dass das Branding der Website nicht funktioniert, selbst wenn ich versuche, es zu aktualisieren.
Ich melde mich hier wieder, um zu sehen, ob jemand Ideen hat. Wir sind kurz davor, dies auf unserer Seite abzuschließen, benötigen nur etwas Hilfe bei der Fehlerbehebung des Problems mit dem Nichtspeichern des Logos. Vielen Dank im Voraus für alle Ideen zur Lösung!