Discourse 安装后无法在浏览器中访问

@Rafeal 在提示符中 $letsencrypt_status == “ENTER to skip”

@Stephen 我刚启动了一台新的 CentOS8 虚拟机,将 firewalld 切换到使用 iptables,安装了 Docker,并按照 INSTALL-cloud.md 从头开始执行 Discourse 安装步骤。我得到了相同的结果——连接到端口 80 和 443 时立即断开。我没有使用 Let’s Encrypt,只是在遇到该提示时按了 ENTER 键。

[root@disctest discourse]# telnet localhost 80
Trying ::1...
Connected to localhost.
Escape character is '^]'.
Connection closed by foreign host.
[root@disctest discourse]# ls shared/standalone/ssl/
disctest.nmr.mgh.harvard.edu.cer      disctest.nmr.mgh.harvard.edu_ecc.key
disctest.nmr.mgh.harvard.edu_ecc.cer  disctest.nmr.mgh.harvard.edu.key

[root@disctest discourse]# ls -l shared/standalone/ssl/disctest.nmr.mgh.harvard.edu.cer
-rw-r--r--. 1 root root 0 Sep  4 16:06 shared/standalone/ssl/disctest.nmr.mgh.harvard.edu.cer

[root@disctest discourse]# tail -1 shared/standalone/log/var-log/nginx/error.log
2020/09/04 20:20:37 [emerg] 6186#6186: cannot load certificate "/shared/ssl/disctest.nmr.mgh.harvard.edu.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

disctest.nmr.mgh.harvard.edu 似乎不是一个有效的 DNS 地址。那是主机名吗?它是否托管在哈佛公共网络块上?

您是否使用了分裂视界(split horizon)?

它位于具有内部 DNS 的私有网络中。

没有,我完全不知道那是什么。

好的,标准安装未按预期运行的原因是您并未使用典型的配置。

如果您的 DNS 记录仅在内部有效,那么您确实使用的是分离 DNS。Let’s Encrypt 无法执行 DNS 验证,而这是它决定是否颁发证书的方式。您的配置在学术网络之外非常罕见。

分离 DNS 是一种高级配置,./discourse-setup 并非为此类情况设计。如果您查看 此文档,会发现入门安装指南并不适用于您。

那么您需要手动编辑 app.yml 并删除 let’s encrypt 模板