文章目录接入并配置ESA配置边缘证书缓存规则的配置1、静态资源全缓存2、动态请求不缓存3、登录用户不缓存4、评论用户不缓存5、未登录用户缓存缓存清理其他关键配置获取真实客户端IP开启IPv6支持效果验证续费阿里云近期也推出了边缘安全加速ESA免费版,现可免费领取,与腾讯EdgeOne形成直接竞争。这对于广大站长而言无疑是好消息——市场竞争越充分,用户越能享受到更优质的服务。
我之前曾尝试过腾讯EdgeOne,但实际体验并不理想,后来便停用了。现在选择阿里云ESA,一方面是因为它承诺的几大亮点:
真·无限流量:无惧突发访问,无流量限制安全内置:基础防护默认开启,无需额外配置无隐藏条款:永久免费,无试用倒计时,更无自动扣费风险
另一方面,我的服务器本就托管在阿里云,估计在兼容性和调度上会更顺畅一些。
接入并配置ESA配置过程非常简单,与EdgeOne类似:点击新增站点,输入你的域名,然后按照引导完成后续步骤。验证域名后,若已备案可选择中国大陆或全球加速,再通过CNAME或NS接入即可。
配置边缘证书申请SSL证书时遇到了小插曲:起初尝试泛域名多次失败,后来换成单域名才成功。虽然官方说明支持泛域名,实际却未通过,这一点稍显不便。不过最终成功部署了SSL证书,完成了最基础的加速配置。
缓存规则的配置完成基础接入后,缓存规则的配置是决定加速效果的关键。相比EdgeOne为WordPress提供了现成模板,ESA则需要在“规则-缓存规则”中手动配置。
免费版限制为5条规则,每条自定义规则内最多可添加3个条件。我根据最佳实践,配置了以下5条规则(其中规则1和5启用缓存,规则2、3、4不缓存),实测效果良好。
1、静态资源全缓存表达式生成预览:
(http.request.uri.path.extension in {"jpg" "webp" "js" "css" "png" "jpeg" "gif" "svg" "ico"})2、动态请求不缓存表达式生成预览:
(http.request.uri.path.extension in {"php"})php格式的文件不缓存,您也可以根据需要增加jsp、asp、aspx等格式。
3、登录用户不缓存表达式生成预览:
(starts_with(http.request.full_uri, "你的WordPress域名") and http.cookie contains "wordpress_logged_in")判断登录用户cookie含有“wordpress_logged_in”,不缓存。
4、评论用户不缓存表达式生成预览:
(starts_with(http.request.full_uri, "你的WordPress域名") and http.cookie contains "comment_author")用户发表评论后,若cookie记录评论者信息“comment_author”,则不缓存。
5、未登录用户缓存表达式生成预览:
(starts_with(http.request.full_uri, "你的WordPress域名") and not http.cookie contains "wordpress_logged_in")最后兜底,对所有不满足上述“不缓存”条件的请求(即未登录访客的访问)进行缓存。
博客还有重要的一环就是发表评论,如果缓存已经生成,那么很可能其他人是看不到这个评论的,这个时候指定清理局部缓存就很有必要。
ESA已经提供了相关API:PurgeCaches - 刷新节点缓存。
我根据API已经实现的逻辑是:当一条评论 发表 / 审核通过 时,同步清除 首页、对应文章页、当前评论所在页面 的缓存,这样能保证用户看到的文章页面是最新的。
目前清理url每日额度上限1000次,手动和接口共用。想来一天也不会有那么多评论,所以基本是够用的。
其他关键配置获取真实客户端IP启用CDN后,用户评论显示的IP会变为CDN节点地址。为获取真实IP,在“规则-转换规则-托管转换”的 开启 “添加真实客户端IP标头”,使用默认标头名称 ali-real-client-ip。然后nginx中添加
# 注意:最好的做法是 set_real_ip_from 只允许阿里云的 IP 段set_real_ip_from 0.0.0.0/0;real_ip_header ali-real-client-ip;real_ip_recursive on;目前这样配置能获取真实的IP,但写法我觉得不够严谨,理想情况下应仅配置阿里云ESA的官方IP段。如果有懂的同学可以指导一下。
开启IPv6支持在“速度和网络-优化-网络优化”中开启IPv6,可进一步提升访问兼容性。
如何验证页面是否被缓存?可以通过浏览器开发者工具,检查 标头/响应头(Response Headers)中的 x-site-cache-status 标识,如果未登录访问应看到 HIT,登录用户看到 DYNAMIC,这表示缓存规则生效正常。
下面常见的几种标识含义
HIT:你的文件已经命中缓存。这表示用户获取文件的方式途径为从CF缓存服务器中获取而非你的源服务器,不消耗你的服务器资源
MISS:已经在缓存服务器中查找了你所请求的文件,但是并没有找到,缓存服务器将会回源至你的服务器中获取该文件,当下次请求时该文件就会显示HIT
BYPASS:已经被要求不缓存该文件,用户将直接从网站源服务器中获取文件,这个通常是因为请求的文件响应了NO-Cache header
EXPIRED:自上次缓存之后,文件的缓存期限已经过期,将会再度回源至网站源服务器进行获取文件,当下次请求时该文件就会显示HIT
DYNAMIC:默认不缓存文件,也没有对应的缓存配置,用户将从网站源服务器获取该文件
值得一提的是,虽然免费套餐默认有效期为一年,但支持自动续期。用户也可主动操作,进入套餐管理页面,在续费中选择“设置续费规则”,弹出的页面选续费一年,支付 0 元。每次续费一年,重复操作,最长可续至2050年。
目前整体使用体验良好,测速结果全线飘绿,加速效果明显。期待阿里云ESA能稳定运行,不再出现此前使用EdgeOne时遇到的问题。