我想更新一下我的情况。
研究之后,我决定需要一个多站点设置(目前是一个容器),并在外部设置一个 nginx 站点来解释设置并将人员和流量引导至单独的 discourse 站点。这样,我就可以让两个站点都对访问者(和网络爬虫)开放只读访问,而无需 list1 的用户处理来自 list2 的内容。我可能需要调整 robots.txt 来满足网络爬虫的要求。
多站点设置的示例很有启发性,但我无法使用 Unix 套接字(网关错误)使其正常工作,因此我最终将其转发到另一个端口,并将该端口重定向到容器内的 443。
在我的 app.yml 文件中,我启用了 SSL 模板,但未启用 letsencrypt 模板。
我已经让测试站点正常工作了,现在我正在寻找在将生产站点转换时可能出现的任何问题,希望在本月晚些时候或下个月进行。
我正在处理外部服务器端的证书问题,但遇到了“不安全”的问题,我通过在容器中强制使用 https 来解决。我有一个任务将通过 cron 运行,将最新的证书和密钥复制到容器的 /shared/ssl 目录(作为 ssl.crt 和 ssl.key)。我不确定是否需要强制重新加载容器内的 nginx 以确保在证书更改时(我认为是在七月)加载新证书。
我确实遇到了一个 discourse 的陷阱:
在容器的 /etc/nginx/conf.d/discourse.conf 文件中,有这个代码片段(域名已更改):
if ($http_host != 'site1.my.domain') {
rewrite (.*) https://site1.my.domain$1 permanent
}
这导致 site2.my.domain 被重定向到 site1.my.domain,所以我不得不注释掉它。
注意:重建容器需要重新进行此编辑,是否有办法避免这种情况?
这还导致了一个浏览器陷阱,因为现在 Firefox 已将该重定向标记为永久性,所以我必须删除浏览器缓存。(这花了我太长时间才弄明白!)
我还发现了其他一些奇怪的事情。
在我的测试站点上,强制使用 https 的参数未为任一站点选中。在我的生产站点上,该参数甚至不存在于设置文件中。我猜测这与两个站点之间的差异有关。