最新更新后因 CloudFlare 设置导致 Error 521

大家好!!

网站在更新到最新版本后完全无法访问。更新后,我重启了整个服务器。我使用的是 Cloudflare。不知道具体问题出在哪里。急需帮助!!

https://engineersasylum.com/

我遇到了同样的问题!

https://businesscomputingworld.co.uk

能分享一下您的 Cloudflare SSL 设置截图吗?

您试过这个功能吗?

我已经将我的网站从 Cloudflare 移除,现在网站已恢复上线。看来 Cloudflare 是罪魁祸首。

我也(曾)遇到了与 forum.confident.faith 相同的 问题。我可以确认,只需在 Cloudflare 界面中“暂停”该站点即可解决问题。这尤其奇怪,因为我还有其他几个采用相同配置的站点并未遇到此问题。

将 DNS 设置重新指向 DigitalOcean 后,您的网站花了多长时间恢复上线?

如果您的 TTL 设置为自动,则应在 5 秒到 1 分钟之间。

具体取决于您的 TTL(生存时间)设置。

我的网站在更新后也无法运行。我已将 TLS 设置更新为 1.2,但网站仍然无法加载。请告诉我可能是什么问题以及如何解决?

切换到 TLS 1.2+ 绝对不是解决方案。

请将您的设置与我在此处发布的设置进行比较:https://meta.discourse.org/t/after-updating-website-wont-come-back-online/128391/6。正如该帖子中提到的,重新构建您的 Docker 容器也可能会有所帮助。

我已经按照那个帖子里的说明操作了,但我的网站仍然无法运行。您能告诉我可能是什么问题吗?我也在那个帖子里回复了,并附上了错误日志中显示的错误信息。

我按照 @gerhard 在私人线程中的建议,尝试删除了 ./shared/standalone/ssl/website.com_ecc.cer./shared/standalone/ssl/website.com_ecc.key。然后我重新构建了应用,但网站仍然无法加载。我找不到完美的解决方案。请有人帮帮我,我的网站已经下线超过 10 个小时了。

我检查了错误日志,发现了以下错误:

nginx: [emerg] cannot load certificate "/shared/ssl/website.com_ecc.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

我觉得我最近在一个网站上遇到过这个问题,但当时还有其他几个问题,所以细节在我脑海里有些模糊。你可以尝试运行以下命令:

rm -rf /var/discourse/shared/standalone/ssl
rm -rf /var/discourse/shared/standalone/letsencrypt

然后重新构建。

如果你被卡住了,并且愿意花钱解决这个问题,我可以帮你让系统恢复运行,费用为 300 美元。我现在就在办公桌前。https://www.literatecomputing.com/product/rebuild-your-droplet/。

我试了您说的方法,但网站仍然无法加载。日志中仍在报错:

nginx: [emerg] cannot load certificate "/shared/ssl/website.com.cer": PEM_read_bio_X509_AUX() failed (SSL: error:0909006C:PEM routines:get_name:no start line:Expecting: TRUSTED CERTIFICATE)

非常抱歉,但我目前确实无法支付300美元。

300 美元是一笔不小的数目,但我今天相当忙碌(在我等待测试对象出问题的间隙)。我最后一点免费建议是:

cd /var/discourse/containers
grep DISCOURSE app.yml
mv app.yml app.broken
cd ..
./discourse-setup

这将生成一个新的 app.yml 文件。也许其中某些内容导致了问题。使用 grep 是为了让你拥有回答 discourse-setup 所需问题时的信息。

我尝试了这个方法,但安装程序没有启动。grep 命令可以正常工作,并且我已经将所有数据备份到安全位置,以便以后使用。但现在当我再次尝试运行安装程序时,它显示:

这将显示哪个命令正在使用 80 端口
COMMAND PID USER FD TYPE DEVICE SIZE/OFF NODE NAME
docker-pr 27737 root 4u IPv6 47517368 0t0 TCP *:http (LISTEN)

如果您试图让 Discourse 与另一个 Web 服务器(如 Apache 或 nginx)同时运行,则需要绑定到不同的端口

请参阅 Run other websites on the same machine as Discourse

如果您正在重新配置已经配置好的 Discourse,请使用

./launcher stop app

在重新配置之前先停止 Discourse,然后重试。

我觉得现在情况变得更糟了。

抱歉。您遇到的问题可能比这里能解决的更为复杂。

既然您的容器文件 app.yml 已被禁止,您需要先停止旧容器:

docker stop app

然后 discourse-setup 才能运行。

我无法想象为什么 grep 会不起作用。

你好 @pfaffman,我尝试了几个小时来修复这个问题,以下是我所做的操作。我成功删除了 SSL 和 letsencrypt 文件夹。然后,我从 app.yml 中删除了 letsencrypt 相关的配置行,并重新构建了应用。最后,我在 Cloudflare 中移除了 HTTPS 设置。完成所有这些操作后,网站又恢复了访问。但现在网站不再使用 HTTPS。我认为我需要知道接下来该怎么做。

您无需开启 Cloudflare 的橙色云朵(代理模式)。我此前并未注意到您正在使用 Cloudflare,如果您读过本主题标题,可能会误以为那是问题所在。

只需在 app.yml 中启用 Let’s Encrypt 即可正常工作。

如果您开启橙色云,Let’s Encrypt 将无法注册或续订证书。

rm -rf /var/discourse/shared/standalone/ssl
rm -rf /var/discourse/shared/standalone/letsencrypt

谢谢!这帮了我大忙!