我有两个独立的 Discourse 实例,希望将它们合并到一个多站点实例中。
我按照多站点指南设置了一个新的数据库,构建过程顺利。但问题是,当我访问实例 B 的域名时,它会被重定向到实例 A(即最初与 WordPress SSO 绑定的那个)。这意味着:
- 访问 https://instanceb.discourse
- 会被重定向到 https://instancea.discourse
- 然后又被重定向到 WordPress 登录页面。
如何让新的多站点容器正常显示?
我不介意第二个容器也需要 SSO——它之前并未配置过。
由于我无法加载实例 B,因此无法对其进行配置或导入配置。
我使用反向 Nginx 代理来访问这两个实例。
感谢任何帮助。
angus
(Angus McLeod)
2
嘿,Tim,
这个问题更多是关于 Discourse 多站点配置的,因为你的问题似乎出在两个 Discourse 多站点实例之间的关系,以及它们之间可能设置的路由上。WordPress SSO 并不是这里的问题,因此我已将你的主题重新归类到 #support。
我想提醒你注意 Discourse 多站点 howto 中的以下警告:
虽然 Discourse 应用支持多站点,但这属于高级系统管理员级别的配置。如果你不清楚自己在做什么,请不要设置多站点。Discourse 团队无法提供多站点配置方面的支持。
由于我们在 Support > WordPress 中的重点更多是 WordPress 插件本身,而我本人也不是 Discourse 多站点专家,你最好的办法可能是看看社区中是否有人能为你指明方向,或者在 Marketplace 中聘请专业人士来帮助你。
2 个赞
pfaffman
(Jay Pfaffman)
3
这听起来像是多站点配置的问题。您参考的是哪份指南?
pfaffman
(Jay Pfaffman)
5
我最大的猜测是,您的反向代理配置有误,将站点 2 重定向到了站点 1;或者曾经发生过这种情况,而您的浏览器缓存了该 301 重定向。
我正在使用标准的 nginx 代理配置。我做的唯一更改是在 server_name 中添加了 instanceb,以便将流量路由到容器。对于 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;
}
}