在用 Cloudflare 或其他 CDN 加速服务时,不少人会突然碰到网页打不开,提示 “Error 521: Web server is down”。这类报错不是简单的服务器宕机,实际上反映的是源站与 CDN 之间的连接中断问题。也就是说,Cloudflare 成功接收到了访问请求,但没能成功连接到你的源服务器。
常见导致 Error 521 的服务器配置问题
1. 防火墙拦截了 Cloudflare 的 IP 地址
Cloudflare 不是直接把访问请求送到你浏览器,而是先通过自己的服务器转发,再连接你的源站。如果源站的防火墙规则中没有放行 Cloudflare 的 IP 段,就会把这些连接当成攻击行为屏蔽掉,导致 521 报错。
处理方法:
进入你服务器的防火墙设置(例如 iptables、firewalld、CSF、宝塔安全防护等),手动将 Cloudflare 官方公布的所有 IP 段加入“白名单”。
常见命令示例(以 Linux 为例):
iptables -I INPUT -s 173.245.48.0/20 -j ACCEPT
记得保存并重启防火墙。
2. Web 服务(如 Nginx、Apache)未正常运行
你的网站虽然服务器在运转,但用于处理网页请求的 Web 服务如果没有启动,CDN 一样无法连上。举个例子,如果你使用 Nginx,但因为配置出错或资源满载导致它崩溃,也会让 Cloudflare 报 521。
处理方法:
进入服务器终端,使用以下命令查看服务状态:
systemctl status nginx
systemctl status apache2
如果显示“inactive”或“failed”,则说明服务未启动。你可以重启服务:
systemctl restart nginx
或查找具体报错信息来进一步修复。
3. 监听端口或绑定地址设置不当
一些开发者为了安全或测试,在服务器上设置 Web 服务只监听本地回环地址(127.0.0.1)或绑定了不对外开放的端口。这会导致 Cloudflare 根本无法发起外部连接。
处理方法:
检查 Nginx 或 Apache 的配置文件,确保 listen 设置为:
listen 80;
listen 443 ssl;
不要出现这种情况:listen 127.0.0.1:80;
确保外部访问 IP 也被监听。
4. 主机资源耗尽(CPU/内存)
服务器负载过高时,也可能无法响应 Cloudflare 的连接请求。例如,PHP-FPM 崩溃、MySQL 卡死、后台占用过高都会导致访问失败。
处理方法:
用终端运行以下命令查看系统状态:top
如果发现 CPU 占用 100%,内存接近满载,需要清理无用进程、关闭暂时不用的服务或考虑升级配置。
5. HTTPS 证书配置不完整
如果你在 Cloudflare 中开启了“完全加密模式(Full SSL)”,但源站并未配置 SSL 证书(或证书不被信任),也会导致连接失败。
处理方法:
安装有效的 SSL 证书(推荐使用免费版 Let’s Encrypt)
检查 Web 服务配置中的 ssl_certificate 与 ssl_certificate_key 是否正确
临时切换 Cloudflare 的 SSL 设置为“Flexible 模式”,由 Cloudflare 处理 HTTPS,源站保留 HTTP(不推荐长期使用)
快速排查技巧
使用浏览器无痕模式访问页面,避免本地缓存干扰
直接访问源站 IP 地址(绕过 CDN),看看是否能正常访问
使用 curl 工具在服务器本地发起请求,排查服务状态:curl -I http://localhost
如果 curl 能访问,但外部访问报错,多半就是防火墙或端口设置的问题。
小结
Error 521 听起来像是服务器“崩了”,但实际上很多时候只是配置没调好。防火墙、Web 服务、SSL 设置这些地方,都是排查的重点。只要一点点梳理检查,大多数问题都能快速恢复正常访问。