WordPress 网站接入 Cloudflare 后,最容易让人紧张的不是速度变慢,而是突然出现 error 1016、error code 521、cloudflare error 1000、cloudflare 403、cloudflare ssl handshake failed 或 cloudflare error 500。这些错误看起来都在 Cloudflare 页面上出现,但真正原因可能在 DNS、源站端口、SSL 证书、防火墙,也可能是 WordPress 插件或 PHP 报错。
很多站长会先清缓存、暂停 Cloudflare、关闭全部插件。这样有机会短暂恢复,却容易把问题扩大:SSL 模式被改乱、WAF 被长期关闭、真实源站 IP 暴露,最后仍然不知道是哪一步修好的。本文按“用户访问链路”来排查:先看域名解析,再看 Cloudflare 能不能连到源站,然后看 SSL、403 拦截和 WordPress 500 日志。
Cloudflare 1016 的重点在 DNS 记录和源站主机名,通常不需要先动 WordPress 主题。
先用 3 分钟定位:错误发生在哪一层
Cloudflare 的作用像一层反向代理。访客先到 Cloudflare,再由 Cloudflare 回源到你的服务器。因此排障时不要只盯着错误代码,而要问四个问题:域名是否能解析到正确源站?Cloudflare 是否能连接 80/443?HTTPS 回源证书是否可用?请求是否被 WAF、Bot 规则或源站安全插件拦截?
记录错误页上的 Ray ID、访问路径、发生时间和访客地区。后面查 Cloudflare Security Events 时会用到。用手机 4G、无痕窗口、不同地区测试一次,排除本地 DNS 或浏览器缓存。每次只改一个设置。例如只改 DNS,不同时改 SSL 和插件;只放行 Cloudflare IP,不同时关闭全部安全规则。如果是生产站,先保存当前 DNS、SSL/TLS、WAF 规则截图,方便回滚。
常见错误代码对照:先查哪里最省时间
错误典型症状优先检查error 1016Origin DNS error,Cloudflare 找不到源站DNS A/CNAME/AAAA 记录、CNAME 目标error code 521Web server is down,源站拒绝连接Web 服务、80/443、防火墙、Cloudflare IP 白名单cloudflare error 1000DNS 指向被禁止的地址或循环真实源站 IP、内网地址、CNAME 回环cloudflare 403访问被拒绝,后台/接口/登录页常见Cloudflare WAF、Bot、源站安全插件cloudflare ssl handshake failed525/526 或握手失败SSL 模式、源站证书、证书链、TLScloudflare error 500页面返回内部错误PHP、插件主题、数据库、伪静态、服务器日志
error 1016:DNS 找不到源站
1016 的本质是 Cloudflare 无法把某个主机名解析到可回源的地址。它常发生在迁站、删除旧记录、把 www 改成 CNAME、使用 SaaS 平台绑定域名,或误删子域名解析之后。用户看到的是 Cloudflare 错误页,但 WordPress 后台、Elementor、WooCommerce 本身通常不是第一嫌疑。
具体解决步骤
打开 Cloudflare 后台 DNS,检查 @、www、shop、blog、api 等正在访问的主机名是否存在记录。根域名一般用 A/AAAA 指向主机商提供的真实服务器 IP;www 可 CNAME 到根域名,或按托管平台要求 CNAME 到指定 hostname。不要把浏览器或 ping 看到的 Cloudflare 边缘 IP 填回 A 记录,这不是你的源站 IP。如果 CNAME 到第三方平台,复制目标域名用 dig/nslookup 检查公网是否能解析。只能内网解析的地址,Cloudflare 无法回源。删除无效 AAAA。服务器没有 IPv6 却保留错误 AAAA,可能导致部分地区或部分路径异常。
如果站点只出现 1016,可以看站内的 Cloudflare Error 1016 怎么解决?DNS Origin Error 排查教程,里面有更细的 DNS 排查思路。
error code 521:源站拒绝 Cloudflare 连接
521 常被理解成“服务器宕机”,但真实情况更细:Nginx/Apache/OpenLiteSpeed 没运行,站点没有监听 443,云安全组没放行端口,宝塔/CSF/Fail2ban/主机商 WAF 把 Cloudflare IP 当异常流量拦截,都会触发 521。
521 排查重点是 Web 服务、端口、防火墙与 Cloudflare IP 白名单。
具体解决步骤
临时用 hosts 指向真实源站 IP,或短时间灰云测试,确认源站是否能直接打开。生产站操作前要记录当前设置。登录服务器执行 systemctl status nginx、apache2 或 lsws,确认 Web 服务运行,配置文件没有语法错误。检查云厂商安全组、服务器防火墙、宝塔防火墙、ufw/iptables/CSF,确保 80 和 443 对 Cloudflare 可达。把 Cloudflare 官方 IP 段加入白名单。使用安全插件或主机商 WAF 的站点尤其要做这一步。看 access log:如果完全没有 Cloudflare 请求,多半被网络或防火墙拦截;如果有请求但返回 5xx,再继续查 PHP 和程序日志。
同时遇到 502、503、504 的站点,可继续读 Cloudflare 500/502/503 真相:一文理清本质区别。
cloudflare error 1000:DNS 指向了不允许代理的地址
1000 与 1016 都和 DNS 有关,但方向不同。1016 是“找不到可用源站”,1000 往往是“你填的地址不允许这样代理”。常见错误包括 A 记录指向 Cloudflare 自己的 IP、127.0.0.1、10.x/192.168.x 内网地址,或者 @ 与 www 互相 CNAME 形成循环。
逐条核对 A/AAAA,只保留真实公网源站 IP。删除迁站遗留的旧 IP、测试记录和重复记录,避免 Cloudflare 随机回源到错误机器。如果平台要求 CNAME,不要把 CNAME 解析出来的结果手工改成 A 记录。避免根域名与 www 相互指向。常见配置是 @ 指向源站,www CNAME 到 @,或完全按平台文档配置。
cloudflare 403:先分清是 Cloudflare 拦截,还是源站拦截
403 的麻烦在于来源很多。Cloudflare WAF、Bot Fight Mode、Rate Limiting、IP Access Rules 会返回 403;源站的 Nginx deny、Apache 规则、Wordfence、iThemes Security、All In One WP Security、主机商防火墙也会返回 403。不要一看到 403 就全站关闭 WAF。
403、SSL 握手失败与 500 要分层排查,避免把安全规则和程序错误混在一起。
具体解决步骤
用 Ray ID、访客 IP、访问路径和时间,到 Cloudflare → Security → Events 查询是否命中规则。如果命中 WAF,对 wp-admin、wp-login.php、wp-json、支付回调、会员登录等必要路径做精确 Skip,而不是直接关掉全站防护。如果 Cloudflare 没有安全事件,查看源站 access/error log 和安全插件日志,确认是否由 WordPress 插件或服务器规则拦截。对支付网关、监控服务、管理员固定 IP 和必要 API 做白名单,但不要把全部国家、全部请求都放行。
使用 Wordfence 的站点,可以结合 Wordfence Security 插件安装配置指南 检查安全插件与 Cloudflare 规则是否重复拦截。
cloudflare ssl handshake failed:源站证书也要正确
SSL 握手失败通常对应 525 或 526。很多人只检查浏览器小锁,却忽略 Cloudflare 到源站之间也要建立 HTTPS。特别是在 Full (strict) 模式下,源站证书必须有效、未过期、域名匹配、证书链完整。
优先使用 Full (strict),但先确认源站证书覆盖 example.com 和 www.example.com。如果使用 Cloudflare Origin Certificate,要把证书和私钥安装到服务器虚拟主机里,不是只在 Cloudflare 后台生成。检查源站 TLS 版本、SNI 和证书链。老系统、旧 OpenSSL 或错误中间证书都可能握手失败。确认 DNS 已经指向新服务器,避免 Cloudflare 回源到旧机器上的过期证书。
SSL 还可能引发循环跳转,可参考 Flexible SSL 模式的致命误区 和 Cloudflare SSL 设置引发 TOO_MANY_REDIRECTS 的解决方案。
cloudflare error 500:回到 WordPress、PHP 和服务器日志
500 通常不是 Cloudflare 自己故障,而是源站返回内部错误。WordPress 站点常见原因包括插件更新后的 fatal error、主题 functions.php 冲突、PHP 版本不兼容、内存不足、数据库连接异常、.htaccess 损坏、Nginx rewrite 写错、文件权限异常。
先灰云或 hosts 直连源站。绕过 Cloudflare 仍然 500,基本就是源站问题。查看 PHP error_log、wp-content/debug.log、Nginx/Apache error log,重点搜索 fatal error、memory exhausted、permission denied、database error。回滚最近更新的插件、主题、PHP 版本和缓存配置。Elementor、WooCommerce、缓存、安全、支付插件要优先排查。检查 memory_limit、max_execution_time、max_input_vars、数据库连接和磁盘空间。必要时临时开启 WP_DEBUG_LOG,修复后再关闭前台 debug 输出。重新保存固定链接,或检查 .htaccess / Nginx rewrite 是否有语法错误。
一套更稳的恢复顺序
DNS:确认记录存在、没有重复、没有错误 AAAA、没有 CNAME 回环,且指向真实源站。回源:确认 Web 服务运行、80/443 开放、Cloudflare IP 没被拦。SSL:确认 SSL/TLS 模式、源站证书、证书链、TLS 版本和回源 IP。安全:查询 Security Events,再检查源站 WAF 和 WordPress 安全插件。WordPress:看 debug.log、PHP 日志、插件主题冲突、数据库、缓存和伪静态。
总结
处理 Cloudflare 常见错误代码,最重要的是不要把所有问题都归咎于 Cloudflare。error 1016 先查 DNS;error code 521 查源站连接和防火墙;cloudflare error 1000 修正禁止地址或 CNAME 循环;cloudflare 403 分清 Cloudflare 与源站拦截;cloudflare ssl handshake failed 检查源站证书和 TLS;cloudflare error 500 回到 WordPress、PHP 与服务器日志。按链路一层层排查,比盲目清缓存、停插件、改 SSL 模式更安全。
延伸阅读
Cloudflare Error 1016 怎么解决?DNS Origin Error 排查教程SSL证书握手失败:深入解决 Cloudflare 525 错误Cloudflare 500/502/503 真相:一文理清本质区别常见 WordPress 故障修复
