prostasia
(Prostasia Foundation)
1
我正在将现有的 Discourse 安装迁移到一台新服务器上,迁移的第一步是在新服务器上进行一次全新的 Discourse 安装。新服务器的 80 和 443 端口上已经运行了 Web 服务器,因此我按照此处的描述,将 Discourse 作为 Unix 套接字运行,并置于反向代理之后。
我唯一不同之处在于,我没有使用 nginx,而是使用了 OpenLiteSpeed 作为反向代理。不过,OpenLiteSpeed 的配置非常简单,并且我已经成功地将其与其他 Docker 应用程序配合使用:您只需配置一个使用套接字地址的外部应用程序,然后使用代理上下文将所有请求重写到套接字。
结果是,当您访问代理 URL(在本例中为 forum.prostasia.org)时,Discourse 确实会加载,但它只显示带有动画点的加载屏幕,并卡在那里。
关于如何解决此问题的任何建议?谢谢!
pfaffman
(Jay Pfaffman)
2
您可以打开 JavaScript 控制台,查看正在加载的内容。检查控制台和网络选项卡。
您是否删除了 Let’s Encrypt 模板?
1 个赞
prostasia
(Prostasia Foundation)
3
谢谢,这很有帮助。我看到了很多这样的错误:
Refused to load the script x because it violates the following Content Security Policy directive:
当将另一个 Docker 容器放在同一个反向代理前面时,我通过将环境变量 TRUSTED_PROXIES 设置为 ** 来解决了这个问题。
值得尝试同样的方法,但在 Discourse 中该如何操作?
RGJ
(Richard - Communiteq)
4
您似乎真的搞砸了内容安全策略设置。
它还尝试从 http://www.example.com/ 检索徽标,这可能会暴露问题所在。这显然是您的表单认为其主机名是…

1 个赞
prostasia
(Prostasia Foundation)
5
谢谢。老实说,我不知道 example.com 是从哪里来的。由于安装脚本 discourse-setup 在此用例中不起作用,我所做的只是编辑 containers/app.yml 然后执行 launcher rebuild app。我猜这漏掉了在某处覆盖 example.com。
但无论如何,我还是设法修复了我的设置。我没有引导一个全新的安装并恢复我的备份,而是从我的原始服务器创建了整个 /var/discourse 目录的 tarball,然后在上面执行了重建,瞧……一切似乎都运行正常。所以,这就是我将来恢复备份的方式。 
1 个赞
Stephen
(Stephen)
6
discourse-setup 可以正常工作,您可以:
- 暂时关闭 80/443 上的任何服务
- 在另一台服务器上构建,然后复制过来
- 使用开关绕过连接检查
1 个赞