去年12月份就陆陆续续看到大家都在讨论阿里云ESA,但一直在忙也没顾上折腾。最近有空就上去瞄了一眼。页面布局和功能基本上比较贴合CloudFlare,经过多年使用CloudFlare的使用习惯用起来也是蛮顺手,免费的额度给另一个站了,本站就只能使用基础版了,月付9.9元,年付59.4。价格方便比CloudFlare年付240刀要低得多。当然,功能性目前也差得远。
接入方式
阿里云ESA支持cname和NS两种接入方式,这点比CloudFlare好。我个人也是比较喜欢CNAME的方式,主要是比较灵活一点,另外就是我为了开启DNSSEC,还订阅了云解析个人版。区域有三种选项。分别是:中国内地(需要备案并且境外无法访问,极少数人的选择)、全球(需要备案,全球加速)、全球(不包含中国内地,适合没有备案的域名)。如果域名备案了,建议选择全球加速,如果域名没备案,建议出门左转换CloudFlare。

套餐
每个阿里云账号都可以购买一个免费的套餐,如果需要更多的就需要通过邀请计划来实现。虽然我成功邀请了一位用户,但需要3个工作日才能到。想了想还是用付费版吧,年付60元还是能负担得了的。对比免费套餐,付费的居然有流量限制,一时没搞懂是为啥。其实,个人站点免费版完全够用的。
ESA配置
成功接入后就需要一些简单的配置了。除了规则那一块,其他的都是点点点。下面分享下我的配置。
DNS
一般个人站点只有一个服务器,直接将A/AAA解析到源站IP即可。如果有多个服务器,可以选择CNAME指向源地址池。由于我还使用了OSS,所以还需要在解析一个域名刀OSS。

配置完成后会在图中显示CNAME的地址,去域名解析那里按照要求修改下即可。
另外把CNAME拉平也配置一下,避免多解析一层,实际上也没觉得多解析一层花多少时间。
SSL/TSL
开启 SSL/TSL
没记错的话默认就是开启的吧,现在很少见到每开启的站点了。
证书管理
申请免费证书,虽然基础本自带一个Digicert免费证书,但懒得区分了Let’s Encrypt免费证书直接搞起。这里说是可以申请泛域名证书,我试了三个不同的域名,仅有一个申请成功了,另外两个一直在申请中,大概率是bug吧。而且这个证书是自动续期的,以后再也不用每三个月去阿里云SSL那里手动申请证书配置给OSS了。
强制HTTPS 开启
同理,基本上很难见到非https访问。
TLS加密套件与协议版本配置
默认就行,TSLV1.0数量少到基本上可以忽略了。
OCSP Stapling
开启,作用就是减少证书验证时间。
HSTS
点击配置,把选项全部打开即可。也是加速用的,加速效果感受不出来的那种。
源站证书
回源协议和端口,根据自己需要配置,一般网站都是443和80端口,跟随客户端协议即可。如果你服务器上的IP不是80或者443,那就填写对应的IP即可。因为一般都会在服务器上安装一个nginx反向代理端口到80和443,有了配置这个甚至可以把nginx关了。
源站帧数校验,如果源站有证书,那就打开(我相信大家都有的)。
安全防护
WAF
配置下WAF就行了,点击频次控制规则,新建规则,按照下面配置即可。

频次别搞太少,小心误伤。
源站防护
有需要的配置,配置倒是不难,但是ESA有提示可能每两周会更新IP,对我来说还是算了,3个月申请证书我都嫌烦。
缓存
配置
这里只需要把查询字符串排序打开就行,可以提高命中率。
多级缓存
免费版选择边缘缓存层(默认),基础版我选择了边缘缓存层+智能(障?)缓存层。
规则
转换规则
修改响应头
我看了下,响应头里的x-powered-by总是会显示我的PHP版本,还是给它别显示号,甚至返回一个假的版本。点击修改响应头,新增规则,取名为隐藏PHP版本

这样,响应回来的信息就只会显示PHP,不会显示具体的版本了。
托管转换
这里主要是为了记录客户端真实IP的,有些人会通过分析IP来配合nginx lua waf做点防护。点击托管转换,添加真实客户端IP表头,点击配置,将状态修改为开启就行,如果想自定义标头就选择使用自定义标头名称。修改完以后,需要在nginx的配置中添加如下:
set_real_ip_from 0.0.0.0/0;
real_ip_header ali-real-client-ip;
real_ip_recursive on;
HTTP响应头
点击开启就完事了。
缓存规则
免费版只有5个,每个规则还不能嵌套太多。如果只有一个域名那差不多是够的,多一个服务例如oss就不够了。
OSS缓存
把OSS放第一个,因为我使用了原图保护,所以不能通过后缀来匹配规则。我只放图片,所以简单粗暴,直接匹配主机名即可。表达式如下:
(http.host in {"你的OSS域名"})

浏览器设置7天就够了,图片也不是经常更新的东西,边缘缓存就1个月或者更久也行。
静态全缓存
设置完OSS,那就再设置本站的静态资源。规则如下:
(http.request.uri.path.extension in {"jpg" "webp" "js" "css" "png" "jpeg" "gif" "svg" "ico" "avif"})
根据自己站点需要缓存的后缀,自行调整。一般这几个就是比较通用了。

动态请求不缓存
规则如下:
(http.request.uri.path.extension in {"php"})
缓存规则选择绕过缓存。
固定页面不缓存
部分wordpress页面不要设置缓存,例如搜索、后台管理等,规则如下:
(http.request.full_uri eq "https://你的域名/wp-admin/*") or (http.request.full_uri eq "https://你的域名/?s=*")
缓存规则选择绕过缓存。
登录用户不缓存
这个免费版可能配置不了,免费版只需要配置wordpress_logged_in即可。规则如下:
(starts_with(http.request.full_uri, "https://你的域名") and http.cookie contains "wordpress_logged_in") or (starts_with(http.request.full_uri, "https://你的域名") and http.cookie contains "wordpress_sec_") or (starts_with(http.request.full_uri, "https://你的域名") and http.cookie contains "comment_")
缓存规则选择绕过缓存。
未登录缓存
规则如下:
(starts_with(http.request.full_uri, "https://你的域名") and not http.cookie contains "wordpress_sec_" and not http.cookie contains "wordpress_logged_in" and not http.cookie contains "comment_")

边缘缓存时间按照你的网站更新时间来设置,如果你每周更新一次,那就设置7天好一点。
回源规则
如果你的站点有些比较大的图片或者文件,建议配置项range回源,当用户请求大图或视频时,ESA 会分块从源站拉取并缓存,减少 Docker 容器的瞬间 IO 压力。设置的地方是Range分片。
速度和网络
速度检测
设置下首页就行,反正只有一个额度。
优化

网络优化就开启下IPV6就行。
流量封顶
免费版是无限流量,无需关注。基础版每个月就50G流量。根据攻击流量,设置下5分钟20G,一个月1000G即可。超出的额度也没多少。
查看效果
设置完成后,新开一个浏览器,查看效果,如果响应表头里的x-site-cache-status是HIT就说明命中缓存了,另外就是server是ESA。
| 状态码 | 含义 | 建议 |
| HIT | 命中缓存 | 理想状态,响应速度最快(通常 < 50ms)。 |
| MISS | 未命中缓存 | 资源在边缘没有,回源抓了一次。下次请求应变为 HIT。 |
| DYNAMIC | 动态内容 | 默认不缓存。如果是静态资源出现这个,说明配置有误。 |
| BYPASS | 绕过缓存 | 匹配到了你设置的“绕过”规则(如登录后台)。 |
| EXPIRED | 缓存过期 | 边缘有记录但旧了,正在重新回源抓取。 |
刚配置完规则的时候就发现OSS托管的图片全部都是DYNAMIC,后来才发现没有被规则匹配到。所以就换成匹配主机名了,反正我OSS只放图片。










京公网安备11011402055145号
你这个博客优化的好啊,秒开
主要依靠阿里云ESA。源站是99一年的3M小水管。
ESA你这个是国内版吧
我用的是全球加速(包含中国大陆),这也是备案的唯一好处了。
速度挺快的,我用的腾讯EO,挺想用ESA的,但是看了看控制台,完全看不懂逻辑,没有EO的清晰,还是放弃了
其实ESA也挺简单(有cloudflare使用经验的话)的,EO唯一的缺点就是限速了,其他也蛮好的。不过我是 all in aliyun,所以就直接上了ESA。