WP SSO + Discourse Multisite

Ich habe zwei separate Discourse-Instanzen und möchte diese zu einer einzigen Multisite-Instanz zusammenführen.

Ich habe den Multisite-Leitfaden befolgt, um eine neue Datenbank einzurichten, und der Build verlief erfolgreich. Das Problem ist jedoch, dass beim Aufruf der Domain von Instanz B eine Weiterleitung zu Instanz A erfolgt (die ursprüngliche, die mit WordPress SSO verknüpft ist). Das bedeutet:

  1. Beim Aufruf von https://instanceb.discourse
  2. wird stattdessen zu https://instancea.discourse weitergeleitet
  3. was dann zur WordPress-Login-Seite weiterleitet.

Wie kann ich erreichen, dass der neue Multisite-Container angezeigt wird?

Es stört mich nicht, wenn der zweite Container ebenfalls SSO benötigt – dies wurde vorher nicht eingerichtet.

Da ich Instanz B nicht laden kann, kann ich sie weder konfigurieren noch die Konfiguration importieren.

Ich verwende einen Reverse-Nginx-Proxy, um auf beide Instanzen zuzugreifen.

Jede Hilfe wäre willkommen.

Hey Tim,

Das ist eher eine Frage zu Discourse Multisite, da dein Problem mit der Beziehung zwischen deinen beiden Discourse Multisite-Instanzen und möglicherweise dem zwischen ihnen eingerichteten Routing zusammenhängt. Das WordPress SSO ist hier nicht das Problem, daher habe ich dein Thema neu in Support kategorisiert.

Ich möchte auf folgende Warnung in Discourses Multisite howto hinweisen:

Multisite wird zwar in der Discourse-Anwendung unterstützt, ist jedoch eine fortgeschrittene Sysadmin-Konfiguration. Wenn du nicht genau weißt, was du tust, richte kein Multisite ein. Das Discourse-Team kann keine Unterstützung bei der Multisite-Konfiguration leisten.

Da wir uns in Support > WordPress eher auf das WordPress-Plugin selbst konzentrieren und ich selbst kein Multisite-Experte bin, wäre es am besten, wenn du schaust, ob dir jemand aus der Community die richtige Richtung weisen kann, oder du jemanden im Marketplace beauftragst, dir zu helfen.

2 „Gefällt mir“

Das klingt nach einem Multisite-Problem. Welchem Leitfaden sind Sie gefolgt?

Ich habe mich an diese Anleitung gehalten:

Meine beste Vermutung ist, dass dein Reverse-Proxy falsch konfiguriert ist und Site 2 auf Site 1 umleitet, oder dass dies einmal der Fall war und dein Browser die 301-Umleitung zwischengespeichert hat.

Ich verwende die Standard-Nginx-Proxy-Konfiguration. Die einzige Änderung, die ich vorgenommen habe, bestand darin, instanceb in server_name hinzuzufügen, damit der Verkehr an den Container weitergeleitet wird. Gibt es bei Discourse Multisite eine andere Möglichkeit, dies zu tun?

server {
    listen 443 ssl http2; listen [::]:443 ssl http2;
    server_name instancea.mydomain.com instanceb.mydomain.com

    ssl on;

        ssl_certificate /var/www/vhosts/mydomain.com.csr;
        ssl_certificate_key /var/www/vhosts/mydomain.com.key;

    ssl_session_tickets off;
    ssl_ciphers ECDHE-RSA-AES128-GCM-SHA256:ECDHE-ECDSA-AES128-GCM-SHA256:ECDHE-RSA-AES256-GCM-SHA384:ECDHE-ECDSA-AES256-GCM-SHA384:DHE-RSA-AES128-GCM-SHA256:DHE-DSS-AES128-GCM-SHA256:kEDH+AESGCM:ECDHE-RSA-AES128-SHA256:ECDHE-ECDSA-AES128-SHA256:ECDHE-RSA-AES128-SHA:ECDHE-ECDSA-AES128-SHA:ECDHE-RSA-AES256-SHA384:ECDHE-ECDSA-AES256-SHA384:ECDHE-RSA-AES256-SHA:ECDHE-ECDSA-AES256-SHA:DHE-RSA-AES128-SHA256:DHE-RSA-AES128-SHA:DHE-DSS-AES128-SHA256:DHE-RSA-AES256-SHA256:DHE-DSS-AES256-SHA:DHE-RSA-AES256-SHA:ECDHE-RSA-DES-CBC3-SHA:ECDHE-ECDSA-DES-CBC3-SHA:AES128-GCM-SHA256:AES256-GCM-SHA384:AES128-SHA256:AES256-SHA256:AES128-SHA:AES256-SHA:AES:CAMELLIA:DES-CBC3-SHA:!aNULL:!eNULL:!EXPORT:!DES:!RC4:!MD5:!PSK:!aECDH:!EDH-DSS-DES-CBC3-SHA:!EDH-RSA-DES-CBC3-SHA:!KRB5-DES-CBC3-SHA;

    http2_idle_timeout 5m; # von 3m Standard erhöht

    location / {
        proxy_pass http://unix:/var/discourse/shared/standalone/nginx.http.sock;
        proxy_set_header Host $http_host;
        proxy_http_version 1.1;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
        proxy_set_header X-Forwarded-Proto https;

  proxy_connect_timeout       600;
  proxy_send_timeout          600;
  proxy_read_timeout          600;
  send_timeout                600;
    }
}