激活 HTTPS 后 Discourse 无法正常工作

您好,

在激活 Let’s Encrypt 模板并重新构建 Discourse 后,一切无法正常工作:

NGINX 报出一个神秘的错误:

奇怪的是:/ETC 目录下没有 nginx 目录。

这些模板处于激活状态:

这是应用重新构建时使用的设置:

造成此问题的原因可能是什么?
我认为证书应该为主机名 discourse.itas-karlsruhe.de 签发。

我已经通过启动器检查了应用是否真的在运行……是的,它确实在运行……

I.

您似乎位于家目录(~)中,此时执行 cd etc 无效。cd /etc/nginx 应该可以正常工作。

1 个赞

不,我已经在正确的目录中检查过了:

如果是标准的 Docker 安装,您还需要先进入应用容器。

cd /var/discourse
./launcher enter app

假设操作成功,您可以使用 sed 打印配置文件第 46 行的内容:

sed -n '46p' /etc/nginx/conf.d/discourse.conf

在使用与您相同的模板且未对该配置文件进行任何特定修改的情况下,我看到的内容如下:

  return 301 https://discourse.softpress.com$request_uri;
1 个赞

谢谢。
我发现了以下情况:

image

如您所见,“Discourse 主机名”字段已在 app.yml 中填写:

看起来由于某种原因无法替换主机名,但我不确定具体原因。当您重新构建 Discourse 时,是通过运行以下命令完成的吗?

cd /var/discourse
./launcher rebuild app

我看到的您和我之间的唯一区别是域名中使用了连字符,但我非常惊讶这会导致问题。

是的,这就是我重建应用的方式……

重建后似乎一切正常:

如果您多次重建,就会达到 Let’s Encrypt 的速率限制。

服务器上并没有 nginx,它位于 Discourse 容器内部。这就是您找不到它的原因。

所以您是通过重建解决了问题吗?

您应该将该帖子标记为解决方案。

我只是想说,我在日志中没有发现任何错误或类似的问题。(参见截图)
构建过程似乎没有问题……

我现在已申请最终域名。我将使用它重新构建应用程序。

在移除了所有 Let’s Encrypt 特定设置并使用 VM 的原始主机名后,一切正常。我不知道这些设置出了什么问题。

你好,Simon,

我已重新构建,并发现证书是用错误的名称签发的:

app.yml 是否可能配置有误?

app.txt (4.1 KB)

您是什么意思?

第 51 行

DISCOURSE_HOSTNAME: deinbalkonnetz.de

那不是你的配置文件。你是从哪里得到的?

???

这确实是配置文件……我们已将此域名路由到我们的虚拟机,我正在尝试在此服务器上设置 Discourse……

然后在配置文件中所有出现 deinbalkonnetz.de 的地方都需要进行修改。

之后,您需要重新构建该应用。

你所说的“到处”是什么意思?
主机名仅在 @第 51 行使用……

除了 app.yml 之外,我不知道还有其他配置文件……

这或许会有帮助?

1 个赞

感谢 Jammy,

这些确实是重要的点,毫无疑问。

问题是,我的主机名根本没有被使用:
DISCOURSE_HOSTNAME: ‘deinbalkonnetz.de

我认为在证书中应该使用真实主机名 “deinbalkonnetz.de”,而不是变量名。

能否将 http://deinbalkonnetz.de/ 作为第二个域名添加到 letsencrypt 证书中,作为一种可能的变通方案?