error 522表示cloudflare节点在15秒内未收到源站的syn-ack响应,本质是cdn与源站tcp连接建立失败;需依次排查源站服务状态、网络连通性、防火墙规则及cloudflare配置(如ssl模式、dns代理状态)。

Cloudflare免费CDN接入后网站突然打不开,浏览器显示“Error 522 Connection timed out”,说明Cloudflare节点已发出连接请求,但你的源服务器在15秒内未完成TCP三次握手的SYN-ACK响应——这不是DNS问题、不是页面内容错误,而是源站网络通路或服务响应层出现了阻断。
第一步:确认源站是否真实可达(绕过CDN直连验证)
打开终端,执行以下命令,强制用源站IP+Host头访问:
curl -I http://your-origin-ip -H "Host: yourdomain.com"
如果返回HTTP 200且响应时间<2秒,说明源站Web服务正常;若超时、返回502/503或直接卡住,则问题在源站本身——跳转到「源站服务状态检查」;若返回403/404,注意是否因Host头触发了CMS重定向逻辑,此时改用curl -I http://localhost在服务器本地测试更可靠。
源站服务状态检查
方法一:检查Web服务进程存活
登录源站服务器,运行systemctl is-active nginx(或apache2、httpd),输出active才表示服务正在运行;若为inactive或failed,立即执行systemctl restart nginx并观察日志:journalctl -u nginx -n 50 --no-pager。
方法二:验证端口监听状态
运行ss -tlnp | grep ':80\|:443',确认nginx/apache确实在0.0.0.0:80或:::80监听;若只监听127.0.0.1:80,外部请求根本无法进入——【必须将listen指令改为listen 80;或listen [::]:80;】。
方法三:排查资源耗尽
执行free -h和top -b -n1 | head -20,重点看Mem Available是否低于500MB、CPU usage是否持续>95%。曾有客户因PHP-FPM子进程泄漏占满内存,导致新连接排队超时——此时需重启PHP服务并调整pm.max_children参数。
网络链路与防火墙排查
① 测试Cloudflare IPv4节点连通性:
从源站服务器执行:telnet 173.245.48.0 80(任选一个Cloudflare官方IP段中的地址),若连接失败,说明防火墙拦截了入向请求。
② 检查iptables/nftables规则:
运行iptables -L INPUT -n --line-numbers,查找是否含REJECT all且无放行Cloudflare IP段的规则;若存在,立即添加白名单:iptables -I INPUT -s 173.245.48.0/20 -j ACCEPT(IPv4)或ip6tables -I INPUT -s 2400:cb00::/32 -j ACCEPT(IPv6)。
③ 验证安全组/云防火墙:
登录云服务商控制台(如阿里云、腾讯云),检查实例绑定的安全组是否开放了80/443端口给0.0.0.0/0或至少包含Cloudflare官方IP段——【切勿只放行本地IP或公司出口IP,Cloudflare回源请求来自全球数百个边缘节点】。
Cloudflare控制台关键配置核查
方法一:SSL/TLS模式必须设为Full(严格)或Full (strict)
进入Cloudflare控制台 → SSL/TLS → 概述 → 将加密模式从“Flexible”改为“Full”。Flexible模式下Cloudflare会以HTTP协议回源,若你的源站仅监听HTTPS 443端口且未配置HTTP 80跳转,连接必然失败。
方法二:确认DNS记录处于代理状态(橙色云朵)
进入DNS设置页,检查A/AAAA记录右侧是否显示橙色云朵图标;若为灰色(DNS only),则流量未经过Cloudflare,522错误不可能出现——此时看到的其实是源站自身错误,应关闭Cloudflare代理再排查。
方法三:临时禁用防火墙规则测试
在Cloudflare防火墙规则页,将所有自定义规则设为“Disabled”,并关闭“Security Level”中的“I’m Under Attack!”模式(该模式会大幅增加回源请求延迟)。这一步能快速排除WAF策略误伤。











