Digital Ocean 和 Wordpress Multisite 前面的 Cloudflare 间歇性 521 错误

Cloudflare Intermitten 521 Error in front of Digital Ocean and Wordpress Multisite

我的网站不断出现间歇性 521 错误代码。这是关于架构的一些解释。我有一个 wordpress 多站点服务器来为客户站点提供服务。网络服务器是带有 PHP-FPM 的 NGINX。每个站点都有自己的域,因此对于每个客户站点,我都有一个连接到 wordpress 的 Cloudflare 帐户。

在更改配置后,服务器的所有站点都出现间歇性 521 错误(我有点忘了是哪一个)。

报错之前,基本上Cloudflare的配置都有 1)从站点名称到多站点IP地址 2) 灵活的 ssl 启用 3) 启用 https 重写和 https 重定向 4) 1 条页面规则将 .domain 重定向到 www.domain。 5) 1 条绕过缓存到 wp-admin 的页面规则 6) 1 条页面规则缓存 wp-content/

下的所有内容

但是突然之间,所有微型网站都出现了 521 错误。我试图修复的是 1) 在多站点中安装 SSL,将域设置为 CNAME,将 HTTPS 设置为 Full(来自 Flexibe)。 2) 测试开启开发模式

问题仍然存在,所以我尝试 curl 一个站点并查看 nginx 中的日志。

以上是日志的例子。在第一部分中,在左侧,我尝试根据时间戳进行卷曲,而右侧是 nginx 日志。在 155xxxxxxx033 我得到了 521 Origin Down 但是右边没有条目。只有上一个 155xxxxxxxx00994 和下一个 155xxxxxx8901。同样对于这个微型网站,我删除了所有页面规则。

之后,我再次尝试将 HTTPS 配置从灵活更改为完整。还是一样。

我现在被困在下一步要调查的地方以及我缺少什么配置。非常感谢帮助和想法。

我遇到了这个问题,我不得不关闭我的 fail2ban IP 地址 jails/intrusion 检测。或者将 Cloudflare IP 地址添加到您的白名单:

https://www.cloudflare.com/ips/

可能是 fail2ban,禁止 Cloudflare IP。按照 Cloudflare 的官方指南 here 恢复访问者的原始 IP 地址。我遇到了同样的问题,这样做为我解决了问题。

简而言之,

  1. 安装mod_remoteip.
  2. Cloudflare 将 header 中的访问者 IP 发送为 CF-Connecting-IP。获取记录而不是 Cloudflare 的 IP。
  3. 并将 Cloudflare 的 IP 范围添加为 remoteip.conf 中的受信任代理。