Let's Encrypt 安装后网站无法访问

刚刚在 Discourse 上安装了 Let’s Encrypt,现在网站无法打开。有什么可能是我做错了吗?
我取消了安装 Let’s Encrypt 的行的注释并重建了应用程序。
现在我收到“Safari 无法连接…”
我错过了什么吗?

您是否还在 expose 部分取消了端口 443 的注释?

如果该行前面有 #,您可以将其删除并重新构建。

2 个赞

您是如何以及何时安装 Discourse 的?Let’s Encrypt 已经默认启用很长一段时间了。

您需要确保端口已打开,正如前面建议的那样。如果您在配置错误的情况下重建太多次,可能会达到 Let’s Encrypt 的速率限制。

是的,我做了。我使用的是 EC2 实例,所以我想知道是否在其他地方设置了重定向。@pfaffman 之前已经设置好了,但没有 SSL,但我正在尝试使用 Auth0 进行测试,所以我需要网站运行 HTTPS。

您可能需要检查安全设置,以确保端口 443 已打开。

如果您运行 discourse-setup,它将检查是否可以通过主机名访问其自身(在两个端口上)。

我刚试了一下,它说无法连接到两个端口上的安装。
检查了实例上的安全设置,我的 IP 已向实例开放了端口。

为了让 letsencrypt 生效,您还需要允许其服务器能够访问您的实例。最好在 AWS 安全组中将端口 80 和 443 对 0.0.0.0/0(即所有地址)开放。

哦,嗨 Clement。我刚注意到是你!

根据去年十一月的一封电子邮件,你的 Discourse 前面有一个负载均衡器,所以你需要让负载均衡器来处理 https。这就解释了为什么你的实例没有启用 Let’s Encrypt。你需要移除 Let’s Encrypt 证书(并且不打开 443 端口也无妨,但这关系不大)。然后弄清楚如何让你的 AWS 负载均衡器处理 https。

这也解释了为什么端口没有打开,因为负载均衡器挡在前面。

谢谢 Jay。我会检查一下,但我不认为我把开发环境的放到了负载均衡器后面。我会再仔细检查一下,以防万一。

1 个赞

嗯。我本以为你会这样做,但这可以解释正在发生的事情。

不。没有负载均衡器。它指向实例的 IP 地址。
我得试试别的办法。

如果这是一个开发实例,那么我会将 app.yml 重命名为其他名称,然后再次运行 discourse-setup。如果测试失败,则表示 DNS 已损坏或有某些东西正在阻止端口(是否有其他东西在运行?)

现在使用 http 时会显示“Welcome to nginx",所以也许我在设置 Let’s Encrypt 时遵循了错误的说明 :man_facepalming:t6:

您可能运行了外部 nginx。

删除或禁用外部 nginx。

不要遵循那些说明,只需重命名您的旧 app.yml 并运行 discourse-setup,它将为您完成所有操作。

1 个赞

试过了,但没用。日志最初提到了防火墙问题,然后显示“创建新订单时出错,授权失败次数过多”,所以我注释掉了 Let’s Encrypt 行,将其置于负载均衡器后面,并使用 Amazon 证书,现在我收到“网关错误”的提示。

是的。如果你重建太多次,你就会达到他们的速率限制。负载均衡器背后的帮助超出了你在这里能获得的帮助范围。

目前最简单的方法是选择另一个主机名,将其指向 EC2(或新的 EC2),然后重试。另一个解决方案是等待一周再重试。

好的,我等着。那将放到我的待办事项列表的最后了。
谢谢你的帮助。

1 个赞

如果是我,我会立即禁用负载均衡器,并仔细检查今天端口是否已打开,因为我一周后肯定会忘记检查。 :slight_smile:

1 个赞