WP SSO + Multisite Discourse

У меня есть два отдельных экземпляра Discourse, и я хочу объединить их в один мультисайтовый экземпляр.

Я следовал руководству по мультисайту, чтобы настроить новую базу данных, и сборка прошла успешно. Проблема в том, что при переходе по домену экземпляра B происходит перенаправление на экземпляр A (оригинальный, связанный с WordPress SSO). Это означает следующее:

  1. Переход по адресу https://instanceb.discourse
  2. Вместо этого происходит перенаправление на https://instancea.discourse
  3. Которое затем перенаправляет на страницу входа в WordPress.

Как заставить новый мультисайтовый контейнер отображаться?

Меня не смущает, что для второго контейнера также потребуется SSO — ранее он не был настроен.

Поскольку я не могу загрузить instanceb, я не могу его настроить или импортировать конфигурацию.

Я использую обратный прокси-сервер nginx для доступа к обоим экземплярам.

Любая помощь будет приветствоваться.

Привет, Тим,

Ваш вопрос больше относится к мультисайтовой конфигурации Discourse, так как проблема, судя по всему, заключается во взаимодействии между двумя вашими экземплярами Discourse и, возможно, в настройке маршрутизации между ними. SSO с WordPress здесь не является причиной проблемы, поэтому я перекатегоризировал вашу тему в раздел Support.

Обратите внимание на следующее предупреждение в руководстве по мультисайтовой конфигурации Discourse:

Хотя функция мультисайта поддерживается в приложении Discourse, это требует продвинутых навыков системного администрирования. Если вы не знаете, что делаете, не настраивайте мультисайт. Команда Discourse не может предоставлять поддержку по настройке мультисайта.

Поскольку в разделе Support основное внимание уделяется самому плагину для WordPress, а я сам не являюсь экспертом по мультисайтовой конфигурации Discourse, вам, вероятно, лучше обратиться к сообществу, чтобы кто-то мог направить вас в нужном направлении, или нанять специалиста в разделе Marketplace.

Похоже на проблему с мультисайтом. Какую инструкцию вы следовали?

Я следовал этому руководству:

Мое предположение: у вас неправильно настроен обратный прокси, и он перенаправляет сайт 2 на сайт 1, либо это происходило ранее, и ваш браузер закэшировал редирект 301.

Я использую стандартную конфигурацию прокси-сервера nginx. Единственное изменение, которое я внес, — добавил instanceb в директиву server_name, чтобы трафик направлялся в контейнер. Есть ли другой способ реализации этого в режиме мультисайта Discourse?

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; # увеличено с 3m по умолчанию

    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;
    }
}