我的 CDN 被薅之后,我接入了阿里云 ESA

这篇博客记录了我从 CDN 迁移至阿里云 ESA 的过程,并对该技术进行了简单入门介绍。

技术 · 2026/10/01

前几天我的 CDN 因为异常流量欠费了,修复完成后我写了一篇博客《花墨的 CDN 被"薅干了"》

评论区有很多朋友向我推荐了阿里云 ESA/腾讯云 Edge One,非常感谢你们的建议。

当你们看到这篇文章的时候花墨应该已经部署好阿里云 ESA 了。

这确实是一项很不错的技术,所以我想简单介绍一下什么是阿里云 ESA,以及我是如何部署的。

如果你正在使用 CDN,或者希望提升个人网站的安全性,可以参考一下我的迁移过程。

什么是 ESA ?

ESA 的全称是 Edge Security Acceleration,中文名为 边缘安全加速

它是阿里云推出的新一代边缘安全加速平台,在 CDN 加速能力的基础上,进一步融合了安全防护和边缘计算能力。

CDN 主要负责“把内容放到离用户近的地方”;ESA 则是在此基础上,进一步负责“加速 + 防护 + 在边缘节点处理请求”。

对于个人博客这种小型站点来说,ESA 提供了更多开箱即用的安全能力。

为什么选择 ESA ?

抛开评论区很多朋友推荐这个因素,ESA 在提供更多安全和边缘能力的同时,对于部分个人站点场景,成本也可能更低。

况且 ESA 并不只是“更快的 CDN”这么简单,如果把 CDN 理解成:

“帮我把文件放到离用户近的服务器。”

那么 ESA 可以理解成:

“我把整个网站的网络入口放到阿里云的边缘网络上。”

尤其对于花墨这样的前后端分离博客来说,ESA 有一个特殊的能力:边缘计算,这是普通 CDN 基本没有的。

例如用户访问:

https://example.com/blog/all

传统架构:

用户
 ↓
CDN
 ↓
源站
 ↓
NestJS
 ↓
返回结果

而 ESA 可以把一部分代码直接部署到边缘节点:

用户
 ↓
ESA节点
 ↓
边缘规则/函数处理
 ↓
必要时请求源站 NestJS
 ↓
返回结果

也就是说:

代码本身也可以离用户更近。

ESA 部署过程

在这里我分享一下我的 ESA 是如何部署的,比我想象中要简单许多。

不过在此之前你可能需要通过添加一条 TXT 记录来证明你对站点的所有权。

新增站点

首先要前往阿里云的 边缘安全加速控制台 - 站点管理,点击新增站点

输入站点

输入需要接入 ESA 的域名,例如flowersink.com,点击下一步。

选择区域和接入方式

获得加速与保护的区域,我选择的是全球,因为我的网站有中国备案,同时有一些朋友在外国。

接入方式我选择的 CNAME,这是传统的 CDN 接入方式,因为我之前接入过,所以我更熟悉,也更方便。

如果是新站点,我更推荐使用 NS 接入,因为可以完整使用 ESA 的 DNS 和安全能力;已有 CDN 用户迁移则 CNAME 更方便。

选择套餐类型

你可以从图中看出各个套餐的区别,个人博客通常选择免费版、基础版就完全足够了。

QQ20261001-100401.png

我为主站域名和 API 域名都部署了基础版,其中基础版和我的 API 域名适配性很高,我打算长期开通。

但我的主站似乎用免费版就够了,虽然也不贵,但好像没必要……不知道你们有没有什么建议。

配置向导

站点添加完成后,点进具体的站点,推荐点击显示配置向导,按照向导内容进行配置。

QQ20261001-101134.png

DNS配置

首先你点击“快速添加DNS记录”来进行添加一条A/AAAA记录,配置源站地址,让 ESA 知道请求最终需要回源到哪里。

主机记录根据域名前缀填写,例如我的主站域名就填写@,记录值/源站填写自己的服务器 IP,进入下一步。

QQ20261001-101252.png

编辑记录选择适合的选项,例如我主站选择的是网站页面、API 选择的是 API 加速

QQ20261001-101740.png

添加完成后,你可以在下面的记录中看到一条代理加速记录,有一栏 CNAME,复制对应的值。

来到云解析 DNS,将之前配置的 CDN 对应的域名 CNAME 记录值替换为刚刚复制的值。

如果你没有接入过 CDN,新增一条 CNAME 记录值即可。

等解析生效后,ESA 就成功接入了。

现在你的域名就从指向 CDN,变成了指向 ESA。

性能配置

这里主要指的是边缘缓存过期时间这一项

我选择的是优先遵循源站缓存策略(如果存在),否则使用自定义缓存 TTL

我在服务器NGINX对于各个域名及目录都有指定的缓存,例如更新频繁的文件缓存时间只有一天,更新频率较低的文件(博客引用图片)设置了一个月。

自动缓存 TTL 默认为 1 个月,具体默认值可能随产品策略调整。

智能路由要钱,且我不清楚具体的效果,所以我没开。

安全配置

我的博客证书主要在 OHTTPS 进行自动续费和配置,在之前配置CDN的时候我就已经存放了自己的证书文件,所以在 ESA 配置的时候直接选择即可。

OHTTPS 负责证书申请和维护,ESA负责使用该证书提供 HTTPS 访问

QQ20261001-103613.png

智能限频我选择的中等,执行动作JS挑战

防盗刷我选择的是观察,因为我暂时不清楚拦截力度如何,运行一段时间看看数据再做决定。

QQ20261001-102126.png

用量安全

我建立了两条用量封顶规则:

每 5 分钟若站点流量 > 1GB,就停用站点。这条是为了防止快速的恶意读取流量。

每天若站点流量 > 20GB,就停用站点。这条是为了防止一整天都有异常流量流出。

有评论区的朋友说,有些爬虫会专门在封顶规则边缘进行爬取,太变态了()

所以这里的规则我其实也暂时没有太好的思路。

验证接入

有许多方法可以验证 ESA 是否成功接入了。

例如验证 DNS:

nslookup flowersink.com

返回结果中会出现 ESA 对应的加速域名(例如 initaf.com 等)

flowersink.com.a1.initaf.com

还可以看 curl 的响应头:

curl -I https://flowersink.com

返回

HTTP/1.1 200 OK
Server: ESA

同时你也能在站点管理的数据概览中看到具体的相应流量,那边说明接入成功了。

QQ20261001-100219.png

成果

在写完这篇博客的时候,API 域名在运行十几个小时后产生约 16.46MB 流量,符合我个人博客 API 的正常使用范围。

ESA 有很多内容可以进行自行设定,例如 AI 爬虫、Bots、缓存、安全规则、流量、代理等等,非常多。

由于我也是个刚开始使用的萌新,更多功能还需要自己慢慢摸索,讲述就只停留在入门的内容。

等我用了一段时间,对各类配置有自己的心得和经验甚至实战经历后,或许我会再写一篇进阶一点的博客!