Docker 安装与 Cloudflare 代理不兼容

我搭建了一台 Amazon EC2 实例来托管 Discourse,一切似乎都很顺利——直到我将所有信息填入安装脚本并执行后,Discourse 的 Docker 镜像本应开始在 80 端口运行,但事实并非如此。

我不知道原因是什么。我能诊断出的一点是:如果我停止 Docker 容器,然后重新启动它,访问我的 EC2 实例的 IP 地址时,会看到默认的 Nginx 服务器页面。但几秒钟后,这个页面也会消失。

我按照建议使用了 Docker 安装。

当我访问域名时,没有任何反应。访问 IP 地址时也是如此。

它运行在 80 端口。

当我停止并重新启动 Docker 容器(如上所述)时,可以看到默认的 nginx“它正在工作”页面。但几秒钟后,又无法访问了。

这是怎么回事?这非常令人沮丧。

我该如何查看此错误日志?

你运行的是哪个发行版?标准的 Ubuntu 服务器默认不预装 nginx,因此除非你手动安装了它,否则不应该看到这个页面。

如果你在宿主机上运行了 nginx,这确实会干扰安装过程并导致其运行异常。

嘿,Rafael,感谢你的回复。

我想我可能修改了 /etc/hosts 来绕过真正的问题,而真正的问题是安装程序提示使用我当前的主机名无法访问 443 端口和 80 端口。

我实际上已经决定删除安装并从头开始,现在又出现了同样的问题。所以,我们不如忘掉我之前说的所有内容,重新开始吧。

为什么它无法访问 443 和 80 端口呢?

我的 EC2 安全组已配置为允许所有入站 HTTP 和 HTTPS 流量,所以我对此有些困惑。

标准安装 不会使用系统上已安装的 nginx。如果主机上已安装 nginx,Discourse 将无法访问端口 80 和 443。在系统上安装 nginx 会阻止 Discourse 在其标准配置下正常运行。

这与 Amazon 无关,这只是 Linux 系统管理的问题。

(在某些情况下,在系统上安装 nginx 是合适的,例如 Setting up offline page 中描述的设置离线页面,但这需要了解 Linux 下端口的工作原理。:smiling_face: 因此,如果当前情况让您感到困惑,请不要从这里开始!)

1 个赞

就像我说的,放弃那个方案吧。

我想通了。

原来你不能让 Cloudflare 代理你的 Discourse 子域名——你需要点击子域名 A 记录上的橙色云朵,将其切换为灰色(仅 DNS)——这样你的 Discourse 安装就能正常访问相应的端口了。

谢谢!

1 个赞