当网站启用 Cloudflare 作为反向代理时,访问过程中偶尔会遇到 Error 521:Web server is down。这类错误表示 Cloudflare 可以连接客户端,但不能成功与源站(你的服务器)建立连接。
除了常见的 Web 服务未启动、配置错误等问题外,很多人忽略了另一个可能的根源:本地主机的防火墙设置。本文将围绕这一主题展开,分析防火墙(如 UFW、iptables)对 Cloudflare 访问链路的影响,并给出合理的排查建议。
什么是 Error 521?
Error 521 是 Cloudflare 给出的特定错误码,用于表示其尝试连接源站时被拒绝。例如:
Cloudflare 已成功解析域名
客户端请求正常到达 Cloudflare 边缘节点
Cloudflare 反向连接源站 IP 失败,或被拒绝连接
这通常说明源站 Web 服务不可达,而不是 DNS 问题或页面不存在。
防火墙是否会影响 Cloudflare?
答案是肯定的。Cloudflare 的请求来自其全球节点(而非浏览器端 IP),若防火墙未放行这些请求,就会直接拒绝连接,从而触发 521 报错。
以下两种场景非常常见:
场景一:UFW 阻止了 Cloudflare IP
UFW 是 Ubuntu 中常见的防火墙管理工具。如果没有针对 Cloudflare 的 IP 设置入站规则,默认可能会丢弃或拒绝请求。
常见配置误区如下:
sudo ufw default deny incoming
sudo ufw allow ssh
sudo ufw allow 80
虽然开放了 80 端口,如果没有明确接受 Cloudflare 的 IP 来源,仍可能被 DROP 掉,导致连接中断。
场景二:iptables 主动丢弃外部 CDN 请求
有些服务器使用自定义 iptables 规则强化安全控制。如果规则中包含如下语句:
iptables -A INPUT -s 0.0.0.0/0 -p tcp –dport 80 -j DROP
即便 Web 服务在运行,也会因 IP 来源不在白名单内而被屏蔽掉 Cloudflare 的反代连接。
正确的防火墙设置方法
为避免 Cloudflare 被防火墙阻断,建议执行以下操作:
获取 Cloudflare 所有边缘节点 IP
Cloudflare 会定期更新其节点 IP 段,官方提供地址如下:
https://www.cloudflare.com/ips/
包括 IPv4 和 IPv6 段。
UFW 示例配置:
# 重置规则(仅测试环境操作,线上请谨慎)
sudo ufw reset
# 开启默认 deny
sudo ufw default deny incoming
sudo ufw default allow outgoing
# 允许 Cloudflare IP 段
for ip in $(curl https://www.cloudflare.com/ips-v4); do sudo ufw allow from $ip to any port 80; done
for ip in $(curl https://www.cloudflare.com/ips-v6); do sudo ufw allow from $ip to any port 80; done
# 启用防火墙
sudo ufw enable
iptables 示例配置:
# 允许 Cloudflare IP 段访问 80 和 443 端口
for ip in $(curl https://www.cloudflare.com/ips-v4); do iptables -A INPUT -p tcp -s $ip –dport 80 -j ACCEPT; done
for ip in $(curl https://www.cloudflare.com/ips-v4); do iptables -A INPUT -p tcp -s $ip –dport 443 -j ACCEPT; done
注意:以上脚本应结合防火墙持久化工具(如 iptables-persistent)使用,避免重启后规则失效。
其它可能引发 Error 521 的原因
除了防火墙,Error 521 还可能由以下因素引起:
Web 服务进程未启动(如 Nginx、Apache 停止)
网站绑定的 IP 与 Cloudflare DNS 配置不一致
主机负载过高、端口监听异常
源站 SSL 配置冲突(Cloudflare 开启 Full Strict 模式但未配置有效证书)
建议从服务状态、监听端口、服务器日志多方面同步排查。
总结
Cloudflare 的 Error 521 本质上是源站拒绝连接所致。防火墙配置不当,尤其是未放行 Cloudflare 全部边缘节点 IP,是导致该错误的常见原因之一。合理开放指定 IP 段并确保 Web 服务稳定运行,大多数 Error 521 报错都可解决。