端口 80 何时可用?

我对基于 Docker 新安装 Discourse 时何时暴露 80 端口感到有些困惑。让我解释一下……

当我运行 ./discourse-setup 时,我假设初始问题(主机名、电子邮件地址等)都是在容器创建之前提出的,因此也是在 Discourse 暴露 80 端口之前提出的。这是正确的吗?

如果是这样,那么在输入主机名时,这是否会造成一点“进退两难”的局面?

我已经创建了我的 A 记录(并且可以通过主机名 ping 通)。但 80 端口并未开放。我认为我明白原因,即容器尚未创建。

但如果情况确实如此,那么如果主机名验证是在容器创建之前进行的,那最初的验证如何能成功呢?

显然我在这里有一个错误的假设,所以有人能帮我解开这个谜团吗?

谢谢。

discourse-setup 会运行 nc 以打开测试所需的端口。

如果您运行的操作系统未安装 nc,该测试将因此失败。您可以确认缺失 nc 是否为问题所在,或者假设您清楚自己在做什么,它应该会正常工作。

啊,明白了。

通常,自以为什么都懂往往是个糟糕的选择!不过我现在选择无视这个警告,继续前进。

我怀疑自己还会遇到问题,因为我认为 nc 应该允许暴露 80 端口(我还没有配置防火墙),但这个问题我稍后再处理。

再次感谢。

嗯,这就是为什么要进行这些测试。但它们只对大多数人在大多数时候有效。

如果你在命令行中输入 nc 并收到 command not found 的提示,那么可以认为该测试已失效(但这并不意味着你的域名能解析到你的服务器,或者端口是可访问的)。

我在设置第一台服务器时遇到过这个问题,令人恼火的是,几小时后问题自行解决了。这类问题通常暗示 DNS 复制存在问题,但我使用的是 CloudFlare DNS(TTL 较低),并且可以通过主机名正常 ping 通。

Docker 安装顺利完成,nc 也可用。

docker ps 显示端口 80 和 443 都已指向容器。

sof -i -P -n 也报告 docker-pr 正在监听这两个端口。

我一直没搞清楚为什么第一次安装会出现这个问题,但现在它又发生了,我将深入排查并解决问题。目前尚未找到原因,但怀疑是某些基础配置问题。

再次感谢。

听起来像是 DNS 传播问题。

橙色云朵图标是否开启?如果 CloudFlare 仅用于 DNS,那就没问题;但如果它处于中间代理模式,你将无法让 Let’s Encrypt 正常工作,而这正是本次测试的目的。

橙色云已关闭。我不想再为此打扰你了,Jay。这是一个有趣的小故障排查挑战,我会自己解决的。

我很确定这不是 DNS 复制问题,因为我可以通过主机名从多个设备(通过 WiFi、蜂窝网络等)访问该网站。如果/问题解决后,我会在此汇报。