如果你的网站接入了 Cloudflare,然后时不时跳出 “Error 521 – Web Server Is Down”,那说明 Cloudflare 连不上你的源站服务器。这个报错看起来像是服务器宕机,其实更多时候是配置问题。
这篇文章就来讲讲,Error 521 为什么会反复出现,以及哪些防护设置、超时设置可能是幕后“元凶”。
什么是 Error 521?
Error 521 是 Cloudflare 返回的状态码,意思是“我正常,但你的服务器没响应”。它的成因有几个可能:
Cloudflare 能正常工作
源站服务器没有回应请求
防火墙把 Cloudflare 拦住了
服务器资源耗尽或处理超时
所以关键不是 Cloudflare 出问题,而是源站让它“吃了闭门羹”。
常见导致 521 报错的防护设置问题
防火墙拦截了 Cloudflare 的请求
很多服务器都会装防火墙,比如 iptables、CSF、UFW 等,这些工具如果没有添加 Cloudflare 的 IP 白名单,就会把它当成“可疑请求”。
解决方法是:前往 Cloudflare 官方页面,获取完整的 IP 列表,然后添加到服务器防火墙白名单中。登录你的服务器终端(SSH)
输入以下命令添加 Cloudflare IP 白名单(部分示例):
sudo ufw allow from 173.245.48.0/20
sudo ufw allow from 103.21.244.0/22
sudo ufw allow from 103.22.200.0/22
sudo ufw allow from 103.31.4.0/22重复上面命令,直到全部 Cloudflare IP 段都添加完。
最后执行:sudo ufw reload完成后,再通过 Cloudflare 访问你的网站,看是否还出现 Error 521。
所有 IP 段可从 Cloudflare 官方获取。
例如在 Ubuntu 上使用 UFW:
sudo ufw allow from 173.245.48.0/20
sudo ufw allow from 103.21.244.0/22
你需要添加所有 Cloudflare 的网段才能确保访问正常。
Web 应用防火墙(WAF)误判
如果服务器启用了 Imunify360、ModSecurity、BitNinja 等防护系统,它们可能因为请求频率、Header 格式或 IP 行为,误判 Cloudflare 的请求为攻击并封锁。
建议查看拦截日志,将 Cloudflare 的 IP 和 UA 加入白名单,必要时降低防护敏感度。
检查 PHP、Nginx 和 Apache 的超时设置
服务器响应超时也会导致 Cloudflare 报 521。你可以通过以下方式调整设置:
PHP 设置(推荐 max_execution_time 不小于 300)
打开 php.ini 文件(路径因服务器不同而异):sudo nano /etc/php/8.1/fpm/php.ini
查找以下参数,并进行调整:max_execution_time = 300
memory_limit = 512M
保存并退出(Ctrl+O,回车,Ctrl+X)
重启 PHP:sudo systemctl restart php8.1-fpm
Nginx 设置超时
编辑 nginx 配置文件:sudo nano /etc/nginx/nginx.conf
在 http 区块中添加:proxy_read_timeout 300;
fastcgi_read_timeout 300;
保存后执行:sudo nginx -t # 检查配置是否正确
sudo systemctl reload nginx
Apache 设置超时(如使用的是 Apache)
编辑配置文件:sudo nano /etc/apache2/apache2.conf
添加或修改:Timeout 300
ProxyTimeout 300
保存并重启:sudo systemctl restart apache2
MySQL 数据库优化建议
如果你的数据库处理慢、负载高,也会拖慢整个网站响应。
推荐操作:
安装 mysqltuner 工具:sudo apt install mysqltuner
sudo mysqltuner
根据提示优化:减少不必要的查询
添加缺失索引
增加缓存参数(如 query_cache_size)
查看慢查询日志:sudo nano /etc/mysql/my.cnf
确保启用了以下内容:
slow_query_log = 1
slow_query_log_file = /var/log/mysql/mysql-slow.log
long_query_time = 2
重启数据库后,检查日志分析瓶颈。
以上每一项操作都是实际可以在服务器终端中完成的。如果你的服务器使用的是面板(如 cPanel、宝塔),也可以在图形界面中找到相应设置入口,手动调整。
源站抗压能力不足
轻量服务器或资源紧张的 VPS 在访问高峰时可能资源耗尽,导致服务挂起。这种情况下 Cloudflare 自然连不上源站。
建议使用缓存插件(如 WP Rocket、LiteSpeed Cache)、开启 Cloudflare 缓存、减轻后台插件负担,或直接升级主机配置。
Cloudflare 端优化建议
虽然报错是源站问题,但 Cloudflare 也能起到缓解作用:
开启“缓存所有内容”规则
为静态页面设置较长的 TTL
对不常变动的页面使用“边缘缓存”
这能有效减少 Cloudflare 对源站的请求压力,让服务器喘口气。
总结
Error 521 频繁出现,往往是源站配置不合理。从防火墙、WAF、超时设置和服务器负载几个方面排查,大多数问题都能解决。如果实在不想改动太多,也可以通过优化缓存和静态资源加速,让 Cloudflare 多处理一些内容,源站就不容易断线。这样你的网站运行就更稳定了。