Discourse 部署到 lightsail: "连接被拒绝"

您好,

我最近按照 install-cloud 指南在 AWS lightsail 实例上安装了 discourse。尽管我仔细遵循了说明并从头开始尝试了几次,但在尝试访问我的论坛时,我遇到了“连接被拒绝”的错误。

我遵循的步骤是:

  1. 创建一个新的 lightsail 实例
  2. 分配一个静态 IP 地址
  3. 打开端口 443
  4. 将我的子域名 (forum.procedural.audio) 指向 IP 地址
  5. 按照指南中的 discourse 安装命令进行操作,包括为 LETS_ENCRYPT 提供电子邮件地址
  6. 浏览我的论坛……连接被拒绝

运行 ./discourse-doctor 输出显示 forum.procedural.audio 上的 discourse 版本为 NOT FOUND。我可以成功从 discourse 接收测试电子邮件。

运行 ping forum.procedural.audio 没有收到数据,但确实找到了正确的静态 IP。

我在日志中注意到以下错误

$ ./launcher logs app
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
nginx: [emerg] cannot load certificate "/shared/ssl/forum.procedural.audio.cer": PEM_read_bio_X509_AUX() failed (S
SL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)
(重复多次)

所以问题似乎与 SSL 有关,但我不知道如何解决。在 shared/standalone/ssl/ 目录中有四个文件

  1. forum.procedural.audio.cer (文件为空)
  2. forum.procedural.audio.key (文件包含一个密钥)
  3. forum.procedural.audio_ecc.cer (文件为空)
  4. forum.procedural.audio_ecc.key (文件包含一个密钥)

所以我不知道 .cer 文件是否为空是问题的一部分。但我还注意到,日志显示它正在查找 /shared/ssl/* 而不是 /shared/standalone/ssl/* 中的文件,这似乎也很相关。

感谢您的帮助。

1 个赞

问题在于您的 Lightsail 实例无法从外部访问。这正是 discourse-doctor 告诉您的——如果您只打开了 443 端口,这很可能就是原因。

在您拥有证书之前,443 端口上的 HTTPS 将无法工作。您没有证书(并且那些证书文件是空的),因为 Let’s Encrypt 由于通信问题而无法注册。

假设您已分配了静态外部地址,请同时打开 80 端口,然后重试。无论如何,都需要打开 80 端口,以便任何通过 HTTP 连接的客户端都能被重定向。

我刚检查过,这个主机名是无效的。你首先需要修复它。

无法解析 forum.procedural.audio:未知主机
1 个赞

默认情况下,lightsail 实例的端口 22 和 80 是开放的。所以我不认为开放端口 80 是解决方案。

抱歉,您能详细说明一下吗?主机名在什么意义上是无效的?

forum.procedural.audio 在 DNS 中不显示,或者换句话说,该主机名无法解析为 IP。我刚刚通过 CloudFlare 和 Google DNS 进行了检查,两者都找不到该主机名。如果我无法解析它,那么 discourse-doctor 也无法解析。\n\n您何时为您的服务器创建了“a”记录?您是否检查过它们的复制时间?\n\n请确保在再次尝试构建服务器之前修复此问题。Let’s Encrypt 对注册/续订的尝试次数是有限制的,当您达到该限制时,您将无法在七天内获得证书。

1 个赞

我在 Namecheap 注册的域名已经使用了两天,它指向 Route 53(之所以增加这一层间接跳转是因为 Route 53 不支持 .audio 域名)。主域名记录已经存在了大部分时间。子域名记录在那里存在大约一个小时了。

如果这是问题所在,那么我认为从我的实例运行 ping forum.procedural.audio 将无法解析 IP 地址。但 IP 地址确实可以解析。

它不是外部解析的,Let’s Encrypt 使用 DNS 来确保服务器是其声称的服务器。

ping forum.procedural.audio                                                                                                               ✔  1909  10:59:47
ping: 无法解析 forum.procedural.audio:未知主机

嗯。嗯,https://dnschecker.org/#A/forum.procedural.audio 显示该名称在很多地方解析,所以这可能是一个传播问题。当我让 1.1.1.1 或 8.8.8.8 查询时,我没有收到响应。但是 NS-337.AWSDNS-42.COM 返回了它,所以你可能只需要等待一段时间。

但是 discourse-setup 会尝试查找地址并查看它是否可以连接到自身。如果失败,通常是 DNS 问题或端口未打开。

1 个赞

您好,

已经快一周了,我仍然无法部署论坛。有谁还有其他想法吗?端口 80 和 443 已打开。我不认为这是 DNS 问题——discourse-doctor 在本地主机(以及 forum.procedural.audio)上找不到 discourse 版本。任何帮助都将不胜感激。

nslookup.exe forum.procedural.audio
Server:  dns.google
Address:  8.8.8.8

*** dns.google 无法找到 forum.procedural.audio:服务器失败

这是 DNS 问题。

3 个赞

Hmmm https://dnschecker.org/#A/forum.procedural.audio 显示它已传播到 31/32 个位置。我从未听说过 DNS 记录需要超过 144 小时才能传播。但现在检查 https://www.nslookup.io/domains/forum.procedural.audio/dns-records/#cloudflare 我看到 Cloudflare 和 Google 无法解析它,尽管权威服务器可以。

所以我想我错了,但不确定该怎么办。我不确定为什么 discourse-doctor 找不到 localhost 上的 discourse 版本。

所以你有一个 DNS 问题。

如果你已经进行了大量的重建,那么你有一个 Let’s Encrypt 速率限制问题。

1 个赞