网站接入阿里云ESA

去年12月份就陆陆续续看到大家都在讨论阿里云ESA,但一直在忙也没顾上折腾。最近有空就上去瞄了一眼。页面布局和功能基本上比较贴合CloudFlare,经过多年使用CloudFlare的使用习惯用起来也是蛮顺手,免费的额度给另一个站了,本站就只能使用基础版了,月付9.9元,年付59.4。价格方便比CloudFlare年付240刀要低得多。当然,功能性目前也差得远。

接入方式

阿里云ESA支持cname和NS两种接入方式,这点比CloudFlare好。我个人也是比较喜欢CNAME的方式,主要是比较灵活一点,另外就是我为了开启DNSSEC,还订阅了云解析个人版。区域有三种选项。分别是:中国内地(需要备案并且境外无法访问,极少数人的选择)、全球(需要备案,全球加速)、全球(不包含中国内地,适合没有备案的域名)。如果域名备案了,建议选择全球加速,如果域名没备案,建议出门左转换CloudFlare。

阿里云ESA

套餐

每个阿里云账号都可以购买一个免费的套餐,如果需要更多的就需要通过邀请计划来实现。虽然我成功邀请了一位用户,但需要3个工作日才能到。想了想还是用付费版吧,年付60元还是能负担得了的。对比免费套餐,付费的居然有流量限制,一时没搞懂是为啥。其实,个人站点免费版完全够用的。

ESA配置

成功接入后就需要一些简单的配置了。除了规则那一块,其他的都是点点点。下面分享下我的配置。

DNS

一般个人站点只有一个服务器,直接将A/AAA解析到源站IP即可。如果有多个服务器,可以选择CNAME指向源地址池。由于我还使用了OSS,所以还需要在解析一个域名刀OSS。

网站接入阿里云ESA

配置完成后会在图中显示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

频次别搞太少,小心误伤。

源站防护

有需要的配置,配置倒是不难,但是ESA有提示可能每两周会更新IP,对我来说还是算了,3个月申请证书我都嫌烦。

缓存

配置

这里只需要把查询字符串排序打开就行,可以提高命中率。

多级缓存

免费版选择边缘缓存层(默认),基础版我选择了边缘缓存层+智能(障?)缓存层。

规则

转换规则

修改响应头

我看了下,响应头里的x-powered-by总是会显示我的PHP版本,还是给它别显示号,甚至返回一个假的版本。点击修改响应头,新增规则,取名为隐藏PHP版本

网站接入阿里云ESA

这样,响应回来的信息就只会显示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域名"})
网站接入阿里云ESA

浏览器设置7天就够了,图片也不是经常更新的东西,边缘缓存就1个月或者更久也行。

静态全缓存

设置完OSS,那就再设置本站的静态资源。规则如下:

(http.request.uri.path.extension in {"jpg" "webp" "js" "css" "png" "jpeg" "gif" "svg" "ico" "avif"})

根据自己站点需要缓存的后缀,自行调整。一般这几个就是比较通用了。

网站接入阿里云ESA
动态请求不缓存

规则如下:

(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_")
网站接入阿里云ESA

边缘缓存时间按照你的网站更新时间来设置,如果你每周更新一次,那就设置7天好一点。

回源规则

如果你的站点有些比较大的图片或者文件,建议配置项range回源,当用户请求大图或视频时,ESA 会分块从源站拉取并缓存,减少 Docker 容器的瞬间 IO 压力。设置的地方是Range分片。

速度和网络

速度检测

设置下首页就行,反正只有一个额度。

优化

网站接入阿里云ESA

网络优化就开启下IPV6就行。

流量封顶

免费版是无限流量,无需关注。基础版每个月就50G流量。根据攻击流量,设置下5分钟20G,一个月1000G即可。超出的额度也没多少。

查看效果

设置完成后,新开一个浏览器,查看效果,如果响应表头里的x-site-cache-status是HIT就说明命中缓存了,另外就是server是ESA。

状态码含义建议
HIT命中缓存理想状态,响应速度最快(通常 < 50ms)。
MISS未命中缓存资源在边缘没有,回源抓了一次。下次请求应变为 HIT。
DYNAMIC动态内容默认不缓存。如果是静态资源出现这个,说明配置有误。
BYPASS绕过缓存匹配到了你设置的“绕过”规则(如登录后台)。
EXPIRED缓存过期边缘有记录但旧了,正在重新回源抓取。

刚配置完规则的时候就发现OSS托管的图片全部都是DYNAMIC,后来才发现没有被规则匹配到。所以就换成匹配主机名了,反正我OSS只放图片。

网站接入阿里云ESA

未经允许不得转载:李阳的个人博客 » 网站接入阿里云ESA

相关文章

评论 (6)

这个站点使用 Akismet 来减少垃圾评论。了解你的评论数据如何被处理

  1. avatar
    老何01-09 22:08回复

    你这个博客优化的好啊,秒开

    • avatar
      李阳01-09 22:34回复

      主要依靠阿里云ESA。源站是99一年的3M小水管。

  2. avatar

    ESA你这个是国内版吧

    • avatar
      李阳01-23 10:51回复

      我用的是全球加速(包含中国大陆),这也是备案的唯一好处了。

  3. avatar
    Hary01-23 20:16回复

    速度挺快的,我用的腾讯EO,挺想用ESA的,但是看了看控制台,完全看不懂逻辑,没有EO的清晰,还是放弃了

    • avatar
      李阳01-25 9:41回复

      其实ESA也挺简单(有cloudflare使用经验的话)的,EO唯一的缺点就是限速了,其他也蛮好的。不过我是 all in aliyun,所以就直接上了ESA。