解决 Error 521:检查服务器防护与超时设置

如果你的网站接入了 Cloudflare,然后时不时跳出 “Error 521 – Web Server Is Down”,那说明 Cloudflare 连不上你的源站服务器。这个报错看起来像是服务器宕机,其实更多时候是配置问题。

20250523164820747-image

这篇文章就来讲讲,Error 521 为什么会反复出现,以及哪些防护设置、超时设置可能是幕后“元凶”。

什么是 Error 521?

Error 521 是 Cloudflare 返回的状态码,意思是“我正常,但你的服务器没响应”。它的成因有几个可能:

Cloudflare 能正常工作
源站服务器没有回应请求
防火墙把 Cloudflare 拦住了
服务器资源耗尽或处理超时

所以关键不是 Cloudflare 出问题,而是源站让它“吃了闭门羹”。

常见导致 521 报错的防护设置问题

防火墙拦截了 Cloudflare 的请求

很多服务器都会装防火墙,比如 iptables、CSF、UFW 等,这些工具如果没有添加 Cloudflare 的 IP 白名单,就会把它当成“可疑请求”。

解决方法是:前往 Cloudflare 官方页面,获取完整的 IP 列表,然后添加到服务器防火墙白名单中。登录你的服务器终端(SSH)

20250523165447251-image

输入以下命令添加 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)误判

20250523173741957-image

如果服务器启用了 Imunify360、ModSecurity、BitNinja 等防护系统,它们可能因为请求频率、Header 格式或 IP 行为,误判 Cloudflare 的请求为攻击并封锁。

建议查看拦截日志,将 Cloudflare 的 IP 和 UA 加入白名单,必要时降低防护敏感度。

检查 PHP、Nginx 和 Apache 的超时设置

服务器响应超时也会导致 Cloudflare 报 521。你可以通过以下方式调整设置:

PHP 设置(推荐 max_execution_time 不小于 300)

  1. 打开 php.ini 文件(路径因服务器不同而异):
sudo nano /etc/php/8.1/fpm/php.ini
  1. 查找以下参数,并进行调整:
max_execution_time = 300
memory_limit = 512M
  1. 保存并退出(Ctrl+O,回车,Ctrl+X)
  2. 重启 PHP:
sudo systemctl restart php8.1-fpm

Nginx 设置超时

  1. 编辑 nginx 配置文件:
sudo nano /etc/nginx/nginx.conf
  1. 在 http 区块中添加:
proxy_read_timeout 300;
fastcgi_read_timeout 300;
  1. 保存后执行:
sudo nginx -t  # 检查配置是否正确
sudo systemctl reload nginx

Apache 设置超时(如使用的是 Apache)

  1. 编辑配置文件:
sudo nano /etc/apache2/apache2.conf
  1. 添加或修改:
Timeout 300
ProxyTimeout 300
  1. 保存并重启:
sudo systemctl restart apache2

MySQL 数据库优化建议

如果你的数据库处理慢、负载高,也会拖慢整个网站响应。

推荐操作:

  1. 安装 mysqltuner 工具:
sudo apt install mysqltuner
sudo mysqltuner
  1. 根据提示优化:
    • 减少不必要的查询
    • 添加缺失索引
    • 增加缓存参数(如 query_cache_size)
  2. 查看慢查询日志:
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、宝塔),也可以在图形界面中找到相应设置入口,手动调整。

20250523171459707-image

源站抗压能力不足

轻量服务器或资源紧张的 VPS 在访问高峰时可能资源耗尽,导致服务挂起。这种情况下 Cloudflare 自然连不上源站。

建议使用缓存插件(如 WP Rocket、LiteSpeed Cache)、开启 Cloudflare 缓存、减轻后台插件负担,或直接升级主机配置。

Cloudflare 端优化建议

虽然报错是源站问题,但 Cloudflare 也能起到缓解作用:

开启“缓存所有内容”规则
为静态页面设置较长的 TTL
对不常变动的页面使用“边缘缓存”

这能有效减少 Cloudflare 对源站的请求压力,让服务器喘口气。

总结

Error 521 频繁出现,往往是源站配置不合理。从防火墙、WAF、超时设置和服务器负载几个方面排查,大多数问题都能解决。如果实在不想改动太多,也可以通过优化缓存和静态资源加速,让 Cloudflare 多处理一些内容,源站就不容易断线。这样你的网站运行就更稳定了。


了解 宝藏号 的更多信息

订阅后即可通过电子邮件收到最新文章。

© 版权声明

相关文章

暂无评论

none
暂无评论...

了解 宝藏号 的更多信息

立即订阅以继续阅读并访问完整档案。

继续阅读