WordPress编辑页面出现Cloudflare 521错误该如何排查解决?
问题原因分析
- Cloudflare安全规则(WAF、速率限制、Bot管理)误拦截:WordPress编辑文章时发起的POST/REST API请求(路径多为
/wp-admin/post.php、/wp-json/wp/v2/posts/*)被Cloudflare判定为恶意请求,直接在代理层拦截,源站未收到请求导致返回521错误。开启开发者模式后Cloudflare会绕过所有安全和缓存规则直连源站,因此问题消失。 - 缓存规则误匹配:即使未安装WordPress缓存插件,Cloudflare默认的缓存策略可能错误匹配了后台编辑路径的请求,导致请求逻辑异常无法到达源站。
- SSL配置冲突:SSL模式设置与WordPress站点的URL配置不匹配,引发跳转死循环,Cloudflare无法拿到源站的正常响应返回521。你此前将SSL从Full改为Flexible的操作反而容易加剧该问题,因为Flexible模式下Cloudflare到源站走HTTP协议,如果WordPress后台强制HTTPS跳转,就会出现无限循环。
- 源站拦截Cloudflare IP:AWS Lightsail安全组、Plesk自带的Fail2ban等防火墙工具误封了Cloudflare的IP段,编辑文章的高频请求触发了拦截规则,其他普通页面请求未触发因此可以正常访问。
可行解决思路
- 排查Cloudflare安全拦截记录:登录Cloudflare控制台,进入「安全 > 事件」页面,筛选出现521错误的时间区间的请求记录,确认是否有
/wp-admin/、/wp-json/开头的请求被WAF、速率限制、Bot管理规则拦截,如有则将对应路径加入规则白名单,或调低对应规则的敏感度。 - 配置后台路径专属页面规则:在Cloudflare「规则 > 页面规则」中新增两条优先级最高的规则:
- 匹配路径
*你的域名/wp-admin/*,设置项为:缓存级别=不缓存、安全性=低、自动HTTPS重写=开启、性能优化项全部关闭 - 匹配路径
*你的域名/wp-json/*,设置项和上一条一致,绕过所有Cloudflare代理层的额外处理逻辑
- 匹配路径
- 修正SSL配置:将Cloudflare的SSL设置改回Full模式(如果源站有可信任的SSL证书可选Full(严格)模式),同时登录WordPress后台「设置 > 常规」,确认「WordPress地址(URL)」和「站点地址(URL)」均为HTTPS开头,和SSL模式保持一致避免跳转冲突。
- 源站放行Cloudflare IP段:在AWS Lightsail实例的安全组入站规则中,放行Cloudflare官方所有IP段的80、443端口访问;同时检查Plesk面板中的防火墙、Fail2ban配置,将Cloudflare IP段加入白名单,避免源站主动拦截代理请求。
- 验证DNS解析:开启Cloudflare开发者模式后,用
nslookup 你的域名确认解析到的是Lightsail实例的源IP,关闭开发者模式后解析为Cloudflare的代理IP,排除本地DNS缓存异常的问题。
内容的提问来源于stack exchange,提问作者emersonthis
相关产品推荐
相关产品推荐

