为什么你的 WordPress 网站需要阿里云 ESA?
"页面加载转圈圈"、"后台登录不上"、"评论里全是垃圾广告"——如果你正在经历这些,说明你的 WordPress 网站需要的不只是"更快",而是更快+更安全。
传统 CDN 只能让网站"跑得快",但面对 DDoS 攻击、SQL 注入和 CC 流量时几乎束手无策。阿里云边缘安全加速 ESA(Edge Security Acceleration)把 CDN 加速、WAF 防火墙、DDoS 清洗和自动 SSL 证书打包到了一个平台里。简单说,它让你的网站在全球 3200+ 边缘节点上"就近开门迎客",同时把恶意流量拦在门外。
奶爸建站笔记之前一段时间(大概3个月)在用腾讯云 EdgeOne 的免费版,但访客经常反馈遇到 522 错误,稳定性确实受限。权衡之后,我切换到了阿里云 ESA 的付费套餐,一年下来也就一百多元,才换上稳定性还有待观察,不过按照奶爸对阿里云产品的了解,应该还是稳定,你也可以没事刷刷奶爸建站笔记的网站,亲自测试下速度和稳定性。
这篇文章就来讲讲,WordPress 网站如何接入 ESA,以及怎样配置缓存规则才能让速度和安全兼得。
准备工作:你需要什么?
- 一个已备案的域名(国内建站必备,未备案域名就只能加速中国内地以外的全球区域。)
- 一台运行中的 WordPress 服务器(比如阿里云 ECS)
第一步:进入阿里云 ESA 控制台
登录阿里云官网,在控制台搜索“ESA”或“边缘安全加速”。第一次使用会提示开通服务,按指引完成即可。开通后你会看到一个简洁的管理界面,别紧张,跟着奶爸一步步来。

奶爸是选择的下面这个套餐,然后选择了1T的流量套餐。流量不够用后面也可以单独买流量包补充,如果你购买时没有这个套餐了就自己选择一款合适的。

第二步:添加你的 WordPress 站点

服务开通后,进入ESA界面,点击“站点管理”→“新增站点”,输入你的域名(比如 naibabiji.com)。ESA 会自动检测该域名的 DNS 状态。然后选择加速区域和套餐。
如果你是在阿里云购买的域名那么就是全自动处理,如果是其他平台购买的域名只需要选择NS或者CNAME的方式接入后修改对应的域名解析记录就行,整体比较简单,不明白的直接问在线客服,有详细教程。
第三步:配置缓存规则
添加站点后,ESA 默认会开启智能缓存,但针对 WordPress 动态内容(如评论、购物车),我们需要调整规则。

ESA基础版支持10条缓存规则,奶爸整理后使用了5条,下面是奶爸建站笔记现在使用的缓存规则,你可以参考添加。

规则1,绕过登录用户与后台管理
(lower(http.cookie) contains "wordpress_logged_in_" or lower(http.cookie) contains "wordpress_sec_" or lower(http.cookie) contains "wp-settings-" or lower(http.cookie) contains "comment_author_" or lower(http.cookie) contains "woocommerce_items_in_cart" or lower(http.cookie) contains "wp_woocommerce_session_" or starts_with(lower(http.request.uri.path), "/wp-admin/") or lower(http.request.uri.path) in {"/wp-login.php" "/wp-signup.php" "/ai-assistant"} or starts_with(lower(http.request.uri.path), "/wp-json/") or lower(http.request.uri.path) eq "/wp-admin/admin-ajax.php")
规则2,绕过动态查询字符串(预览/评论等)
( lower(http.request.uri.query) contains "preview=true" or lower(http.request.uri.query) contains "replytocom=" or lower(http.request.uri.query) contains "wp_hc=" or lower(http.request.uri.query) contains "s=" or lower(http.request.uri.query) contains "customize_changeset_uuid=" )
规则3,静态资源极致缓存(图片、字体等),浏览器缓存过期时间7天,边缘缓存过期时间1个月,开启响应过期缓存,符合缓存保持条件
(lower(http.request.uri.path.extension) in {"jpg" "jpeg" "png" "gif" "webp" "ico" "woff" "woff2" "ttf" "svg" "mp4" "zip" "pdf"})
规则4,前端代码缓存(CSS / JS),浏览器缓存过期时间1天,边缘缓存过期时间7天,开启响应过期缓存,符合缓存保持条件
(lower(http.request.uri.path.extension) in {"css" "js"})
规则5,未登录游客的前台页面(智能缓存),浏览器缓存过期时间不缓存,边缘缓存过期时间1小时,边缘状态码缓存过期时间200 30分钟,4xx 1分钟,开启响应过期缓存,符合缓存保持条件
(http.request.method in {"GET" "HEAD"} and not starts_with(lower(http.request.uri.path), "/wp-admin/") and not lower(http.request.uri.path) in {"/wp-login.php" "/wp-signup.php" "/ai-assistant"} and not lower(http.cookie) contains "wordpress_logged_in_" and not lower(http.cookie) contains "wordpress_sec_" and not lower(http.cookie) contains "wp-settings-" and not lower(http.cookie) contains "comment_author_" and not lower(http.cookie) contains "woocommerce_items_in_cart" and not lower(http.cookie) contains "wp_woocommerce_session_")注意,上面每条规则名称后面,奶爸还写了具体的缓存过期规则,不要忘记配置。
第四步:全自动 SSL 配置(最省心的一步)
进入“SSL/TLS”模块的“边缘证书”,点击“申请免费证书”。ESA 支持免费自动续签的 Let's Encrypt 证书,你只需选择“自动验证”——系统会通过 DNS 记录完成验证,无需手动操作。点“确定”后稍等 1~3 分钟,证书自动生成并部署。

小提示:如果没有修改NS记录采用的CNAME接入,需要手动去添加域名验证记录才能成功申请。
第五步:了解安全防护基本情况
默认的当启用了ESA后,就自动开启了部分安全防护功能:
- ESA默认已开启 DDoS基础防护 ,可自动防御不高于10Gbps的DDoS攻击和不高于10万QPS的CC攻击,无需额外设置。
- Web基础防护(WAF) 也默认启用并处于拦截模式,新接入的域名会自动受到SQL注入、XSS等常见Web攻击的防护。
- SSL/TLS加密 默认开启,保障数据传输安全

像AI爬虫管理、Bots,如果你网站发现存在这些爬虫严重拖累速度,那么可以手动去打开。当然,如果你使用的是WP Panel面板,则不用担心这些,面板会自动对同IP访问速度限速,当面板默认安全功能拦截不住的时候再来开启也可以。
第六步:给WordPress添加Nginx FastCGI缓存
ESA只是启用了CDN功能,如果服务器不做缓存优化,默认CDN回源时也会造成一些服务器性能影响,所以在WordPress网站端再新增一层缓存也非常有必要。
最简单的操作就是直接装一个缓存插件,例如WP Super Cache这些免费缓存插件。
更高效的是直接启用Nginx FastCGI缓存,这是直接从服务器层面进行缓存,比插件缓存效率更高。

这样配置后,只有CDN和Nginx FastCGI缓存都没有命中的情况下才回源,对服务器性能影响最低。
配置方法参见:宝塔面板Nginx FastCGI缓存配置教程:WordPress网站加速完整指南 – 奶爸建站笔记
常见问题 FAQ
Q:用了 ESA 之后,游客访问前台界面没更新或者有其他信息是什么原因?
A:大概率是你没有配置缓存过期规则或者配置的不对,还有一种可能是你服务器启用了Nginx FastCGI缓存但是缓存规则没配置,CDN抓到了你没正确绕过缓存的页面,最简单的测试方法先清理网站和服务器这边的缓存,然后清理ESA的缓存,清理后正常,则是缓存规则的问题。
Q:ESA 会不会影响 WordPress 插件(如 Woocommerce)的购物车功能?
A:按照教程正确添加了缓存规则通常不会,但是如果你使用了自定义的商店相关页面,规则里面的地址需要同步更新,不然不会绕过缓存。
Q:我已经用了别的 CDN,还能同时用 ESA 吗?
A:网站本身(https://blog.naibabiji.com 这种)一次只能使用一个CDN,但是网站内部上传的数据,例如wp-content/uploads文件夹下的资源可以走另外的CDN,在CDN或者缓存插件里面配置CDN域名就行,有些复杂,新手建议不要折腾。
Q:用了ESA 后发文章失败,提示/wp-json/ 全系列 403错误
A: 这是因为你网站之前使用的另外一家CDN,切换到ESA后,由于域名解析和CDN缓存的问题,机缘巧合的情况下把你账号cookies搞坏了,退出账号重新登录即可解决。(奶爸在这坑上排查了2个多小时,泪目 T.T)
总结与互动
你现在访问奶爸建站笔记的网站感觉速度怎么样?有没有碰到522错误?
如果你也正在为网站访问速度困扰,可以先买一个月的ESA试试效果,好用就继续用,不好用就先从网站自身检查一下问题,是不是网站本身就不快,给它配上CDN速度也起不来。
