在使用 Cloudflare 时,521 错误(Web Server Is Down)是一个常见但易被误判的问题。很多站点会出现这样的情况:DNS 解析正常、服务器看似在线,切换为灰云访问一切正常,但一旦启用橙云代理就立刻报 521。实际上,这并非 Cloudflare 本身故障,而是源站在代理模式下无法与 Cloudflare 正常建立连接。理解橙云与灰云的访问路径差异,是定位和解决 521 错误的关键。
一、Cloudflare 521 错误的真实含义
1.1 521 错误到底表示什么
Cloudflare 对 521 错误 的定义是:
Cloudflare 可以接收到访客请求,但在尝试与源站服务器建立 TCP 连接时失败。
这通常意味着:
Cloudflare → 源站 的连接被拒绝,或无法建立
问题发生在 网络 / 防火墙 / Web 服务层
DNS 解析本身是正常的
1.2 521 并不等同于“服务器宕机”
以下情况都会触发 521:
场景是否可能服务器真正宕机是防火墙阻止 Cloudflare IP是Web 服务未监听端口是只允许直连 IP是WAF / 安全插件拦截是
关键不在于服务器是否在线,而在于是否允许 Cloudflare 连接。
二、橙云 / 灰云的本质区别
2.1 橙云与灰云是什么
在 Cloudflare DNS 中,每条记录都有一个云朵状态:
状态显示实际含义橙云Proxied启用 Cloudflare 代理灰云DNS only仅 DNS 解析,直连源站
这是一个是否经过 Cloudflare 中转的开关。
2.2 橙云状态下的访问路径
访问路径:访客 → Cloudflare 节点 → 源站服务器
此时:
源站看到的访问 IP 是 Cloudflare 节点
防火墙必须允许 Cloudflare IP 段
Web 服务必须正常监听端口
2.3 灰云状态下的访问路径
访问路径:访客 → 源站服务器(直连)
此时:
Cloudflare 不参与转发
不会出现 Cloudflare 错误页面
也不会出现 521 错误
三、为什么 521 只会在橙云状态下出现
原因非常明确:521 的前提是 Cloudflare 尝试连接源站。
灰云:Cloudflare 不连接源站 → 不可能 521
橙云:Cloudflare 必须连接源站 → 失败就 521
因此在排查时只要出现“灰云访问正常、切换橙云立即 521”的情况,基本可以直接判断问题出在源站对代理访问的配置上,而不是 DNS 或 Cloudflare 服务本身。
四、橙云场景下 521 的高频原因
4.1 防火墙未放行 Cloudflare IP(最常见)
表现
灰云访问正常
橙云立即 521
服务器日志无请求或只有拒绝记录
正确做法
放行 Cloudflare 官方 IP 段
放行端口至少包括:
80(HTTP)
443(HTTPS)
Cloudflare IP 列表需定期同步,不可手写固定 IP。
4.2 Web 服务未监听公网端口
常见错误包括:
仅监听 127.0.0.1
未监听 80 / 443
Web 服务未启动或异常退出
推荐做法(通用、安全):
监听 0.0.0.0:80
监听 0.0.0.0:443
4.3 错误理解“隐藏源站 IP”
以下做法非常容易导致 521:
禁止所有非本地 IP
屏蔽海外 IP
仅允许自己 IP 访问
Cloudflare 节点大多为海外 IP,会被一并拦截。
4.4 安全插件 / WAF 误拦截
包括但不限于:
宝塔防火墙
系统级防护规则
第三方安全插件
凡是基于 IP、ASN、国家的规则,都需确认 Cloudflare 是否被误伤。
五、利用橙云 / 灰云定位 521 的实操流程
5.1 第一步:切换为灰云验证源站
登录 Cloudflare 控制台
DNS → 找到对应记录
切换为 灰云(DNS only)
等待 1–2 分钟后访问网站
可访问 → 源站正常
不可访问 → 源站自身问题
5.2 第二步:切回橙云
切回 橙云(Proxied)
刷新页面
如果立刻出现 521,可确认问题发生在 Cloudflare → 源站。
5.3 第三步:按顺序排查
推荐顺序:
防火墙是否放行 Cloudflare IP + 80/443
Web 服务监听状态
安全插件 / WAF
系统与 Web 日志
六、橙云的正确使用建议
6.1 防火墙层面
不直接屏蔽海外 IP
不只允许个人 IP
应:
放行 Cloudflare IP
把安全策略交给 Cloudflare
6.2 Web 服务层面
正常监听公网端口
不基于来源 IP 做粗暴限制
使用 CF-Connecting-IP 获取真实访客 IP
6.3 运维建议
灰云仅用于排查
生产环境长期使用橙云
每次安全策略变更后,必须测试橙云访问
