markwill
(Mark Williams)
1
我对基于 Docker 新安装 Discourse 时何时暴露 80 端口感到有些困惑。让我解释一下……
当我运行 ./discourse-setup 时,我假设初始问题(主机名、电子邮件地址等)都是在容器创建之前提出的,因此也是在 Discourse 暴露 80 端口之前提出的。这是正确的吗?
如果是这样,那么在输入主机名时,这是否会造成一点“进退两难”的局面?
我已经创建了我的 A 记录(并且可以通过主机名 ping 通)。但 80 端口并未开放。我认为我明白原因,即容器尚未创建。
但如果情况确实如此,那么如果主机名验证是在容器创建之前进行的,那最初的验证如何能成功呢?
显然我在这里有一个错误的假设,所以有人能帮我解开这个谜团吗?
谢谢。
pfaffman
(Jay Pfaffman)
2
discourse-setup 会运行 nc 以打开测试所需的端口。
如果您运行的操作系统未安装 nc,该测试将因此失败。您可以确认缺失 nc 是否为问题所在,或者假设您清楚自己在做什么,它应该会正常工作。
markwill
(Mark Williams)
3
啊,明白了。
通常,自以为什么都懂往往是个糟糕的选择!不过我现在选择无视这个警告,继续前进。
我怀疑自己还会遇到问题,因为我认为 nc 应该允许暴露 80 端口(我还没有配置防火墙),但这个问题我稍后再处理。
再次感谢。
pfaffman
(Jay Pfaffman)
4
嗯,这就是为什么要进行这些测试。但它们只对大多数人在大多数时候有效。
如果你在命令行中输入 nc 并收到 command not found 的提示,那么可以认为该测试已失效(但这并不意味着你的域名能解析到你的服务器,或者端口是可访问的)。
markwill
(Mark Williams)
5
我在设置第一台服务器时遇到过这个问题,令人恼火的是,几小时后问题自行解决了。这类问题通常暗示 DNS 复制存在问题,但我使用的是 CloudFlare DNS(TTL 较低),并且可以通过主机名正常 ping 通。
Docker 安装顺利完成,nc 也可用。
docker ps 显示端口 80 和 443 都已指向容器。
sof -i -P -n 也报告 docker-pr 正在监听这两个端口。
我一直没搞清楚为什么第一次安装会出现这个问题,但现在它又发生了,我将深入排查并解决问题。目前尚未找到原因,但怀疑是某些基础配置问题。
再次感谢。
pfaffman
(Jay Pfaffman)
6
听起来像是 DNS 传播问题。
橙色云朵图标是否开启?如果 CloudFlare 仅用于 DNS,那就没问题;但如果它处于中间代理模式,你将无法让 Let’s Encrypt 正常工作,而这正是本次测试的目的。
markwill
(Mark Williams)
7
橙色云已关闭。我不想再为此打扰你了,Jay。这是一个有趣的小故障排查挑战,我会自己解决的。
我很确定这不是 DNS 复制问题,因为我可以通过主机名从多个设备(通过 WiFi、蜂窝网络等)访问该网站。如果/问题解决后,我会在此汇报。