本文从技术原理出发,深入解析 ESA 的架构设计、核心能力与工作机制,并附赠从零到上线的完整实操教程。适合对边缘计算、CDN 加速、网络安全感兴趣的技术人员阅读。
第一部分:技术背景与产品定位
1.1 为什么需要边缘安全加速?
随着互联网业务的全球化部署,传统架构面临三个核心痛点:
第一,延迟问题。用户请求需要跨越长距离网络到达中心机房,物理距离决定了延迟下限。一个北京用户访问美国源站,即使网络状况良好,往返延迟(RTT)也在 150-300ms 之间,对于实时交互类应用这是不可接受的。
第二,安全问题集中化。传统方案中,安全防护设备(WAF、DDoS 清洗)通常部署在源站前端或数据中心入口。这意味着所有攻击流量都会先到达你的基础设施,再被清洗,源站带宽和计算资源被攻击流量大量消耗。
第三,架构碎片化。要同时解决加速和安全问题,企业通常需要分别采购 CDN(加速)、WAF(应用层防护)、DDoS 高防(网络层防护)、DNS(解析调度)等多个产品,配置分散在不同控制台,策略难以统一协调。
边缘安全加速(ESA)正是为解决这三个痛点而设计的下一代边缘云架构。
1.2 ESA 的技术架构
ESA 的架构可以概括为"四层一体":
┌─────────────────────────────────────────────────────────────┐ │ 用户请求层 │ │ (浏览器、App、API 客户端) │ └──────────────────────┬──────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 第一层:Anycast 智能调度层 │ │ • 全球 3200+ 边缘节点,覆盖 70+ 国家和地区 │ │ • 直联 10000+ ISP,180 Tbps+ 带宽储备 │ │ • 基于实时网络质量数据(延迟、丢包、负载)动态选路 │ │ • DNS 解析平均耗时 < 30ms │ └──────────────────────┬──────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 第二层:安全防护层(边缘执行) │ │ • DDoS 清洗:20Tbps+ 全球防护能力,网络层攻击在边缘丢弃 │ │ • WAF:基于机器学习的威胁检测,拦截 SQL 注入、XSS 等 │ │ • Bot 管理:指纹识别 + 行为分析,区分正常用户与爬虫 │ │ • CC 防护:频次控制引擎,自动识别异常访问模式 │ └──────────────────────┬──────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 第三层:边缘计算层 │ │ • Serverless 函数:JavaScript/TypeScript 代码在边缘执行 │ │ • Pages 托管:静态网站一键部署,支持 Vue/React/VitePress │ │ • KV 存储:键值对数据在边缘节点全局一致存储 │ │ • 镜像部署:容器化应用在边缘运行 │ └──────────────────────┬──────────────────────────────────────┘ │ ▼ ┌─────────────────────────────────────────────────────────────┐ │ 第四层:回源与数据分析层 │ │ • 智能路由:动态选择最优回源路径,支持多源站负载均衡 │ │ • 协议优化:HTTP/2、HTTP/3(QUIC)、Brotli 压缩 │ │ • 日志采集:DNS/网络层/应用层全链路日志,秒级采集 │ │ • 实时分析:分钟级异常攻击识别,多维可视化报表 │ └─────────────────────────────────────────────────────────────┘这个架构的关键设计思想是**“安全左移”——将安全防护从源站前移到边缘节点,攻击流量在到达源站之前就被过滤;同时"计算下沉"**——将可前置的计算逻辑下沉到离用户最近的节点执行,减少回源次数和延迟。
1.3 ESA 与传统 CDN/DCDN 的核心差异
| 维度 | 传统 CDN | DCDN(全站加速) | ESA(边缘安全加速) |
|---|---|---|---|
| 核心定位 | 静态内容分发 | 动静态混合加速 | 加速 + 安全 + 边缘计算一体化 |
| 安全防护 | 基础 DDoS 防护(需额外购买) | 基础防护 | 原生 Tbps 级 DDoS + WAF + Bot 管理 |
| 边缘计算 | 无 | 有限支持 | 完整的 Serverless 平台(函数 + Pages + KV) |
| DNS 管理 | 需单独配置 | 需单独配置 | 内置 DNS 管理,根域名统一管理所有子域名 |
| 证书管理 | 手动上传/续期 | 手动上传/续期 | 自动申请 Let’s Encrypt 证书,自动续期 |
| 规则引擎 | 简单缓存规则 | 中等复杂度 | 高度灵活的规则系统,支持多条件组合 |
| 版本管理 | 无 | 无 | 支持配置版本管理,可快速回滚 |
| 适用场景 | 静态资源加速 | 复杂 Web 应用 | 高安全要求的全栈应用、AI 应用、全球化业务 |
ESA 并不是 CDN 的替代,而是 CDN 的演进。它在保留 CDN 所有加速能力的基础上,将安全能力和计算能力原生集成到边缘节点,形成"网络即平台"(Network as a Platform)的新范式。
1.4 关键技术原理
Anycast 路由
Anycast 是一种网络寻址和路由方法,同一个 IP 地址被分配给分布在不同地理位置的多个服务器。当用户发起请求时,网络路由协议(BGP)会自动将请求导向"距离最近"(基于路由跳数或延迟)的节点。
ESA 利用 Anycast 实现两个效果:
- 就近接入:用户请求自动接入最近的边缘节点,减少首包延迟
- 抗 DDoS:攻击流量被分散到全球节点,单节点负载可控,天然具备分布式抗攻击能力
边缘缓存与动态加速
ESA 对静态资源和动态内容采用差异化处理策略:
静态资源(图片、CSS、JS、视频):
- 首次请求从源站获取,缓存到边缘节点
- 后续相同请求直接从边缘节点返回,实现"零回源"
- 支持缓存键自定义(如忽略 URL 参数中的跟踪代码),提高缓存命中率
动态内容(API 接口、个性化页面):
- 不缓存或短缓存(如 1 分钟)
- 通过智能路由选择最优回源路径
- 支持协议优化(如 HTTP/3 减少握手延迟)
- 边缘函数可处理轻量逻辑(如参数校验、请求改写),减少回源次数
零信任安全模型
ESA 在边缘节点实施零信任策略:
- 每个请求都经过身份验证和威胁检测,不区分"内部"和"外部"流量
- 基于机器学习的异常检测模型持续学习正常流量模式,自动识别偏离模式的可疑请求
- 安全策略在边缘统一执行,避免不同安全产品策略冲突
第二部分:完整实战教程
前置准备
| 准备项 | 说明 |
|---|---|
| 阿里云账号 | 已完成实名认证,建议企业实名(个人实名部分功能受限) |
| 已备案域名 | 接入中国内地加速的域名必须完成 ICP 备案,且备案信息已同步至阿里云(备案成功后建议等待 8 小时再操作) |
| 源站服务器 | 已搭建好网站,知道源站的公网 IP 或源站域名 |
| DNS 管理权限 | 能在域名服务商(如阿里云 DNS、腾讯云 DNS、Cloudflare 等)添加解析记录 |
| SSL 证书(可选) | 若使用 HTTPS,可提前准备证书,也可直接使用 ESA 免费证书 |
步骤一:开通 ESA 服务
- 登录阿里云控制台
- 点击左上角侧边栏菜单,找到“边缘安全加速 ESA”并进入控制台
- 首次使用需点击“立即开通”,勾选服务协议后完成开通
套餐选择建议:
| 套餐 | 价格 | 适用场景 |
|---|---|---|
| 免费版 | 0 元/月 | 个人博客、开发测试、学习实践 |
| 基础版 | 约 60 元/年 | 小型网站、初创项目 |
| 标准版 | 按需计费 | 中型企业网站、电商 |
| 高级版/企业版 | 按需计费 | 大型企业、金融、高安全要求业务 |
个人博客或测试项目直接选择免费套餐(0 元,不限流量);小型商业站点选择基础版。
若后续需要使用Pages和边缘函数功能,需在控制台中找到“边缘计算 > 函数和 Pages”,点击开通该子服务。
步骤二:添加站点(根域名)
ESA 与传统 CDN 最大的区别是:你只需要添加一次根域名,所有子域名都在这个站点下统一管理。
- 进入 ESA 控制台,点击“站点管理” → “新增站点”
- 输入你的根域名(例如:
example.com,不要带www) - 选择加速区域:
- 全球:覆盖全球用户(含中国内地)
- 全球不含中国内地:适合源站在海外、主要用户在海外的场景
- 仅中国内地:仅加速国内访问
- 选择接入方式:
- CNAME 接入(推荐):保留原有 DNS 服务商,只需添加 CNAME 记录,灵活性高
- NS 接入:将域名的 DNS 服务器完全托管给 ESA,适合全新域名
- 选择套餐,勾选服务协议,点击“下一步”完成站点创建
⚠️ 如果域名刚完成 ICP 备案,建议等待8 小时后再添加站点,否则系统可能误判为"域名未备案"。
步骤三:验证域名归属权
首次添加域名到 ESA,必须验证你对该域名的所有权。
- 站点创建完成后,进入站点详情页
- 在左侧导航栏选择“站点概况”,找到 ESA 提供的TXT 验证记录:
- 主机记录:
_esaauth - 记录值:
verify_xxx...(以控制台显示为准)
- 主机记录:
- 登录你的DNS 服务商控制台(如阿里云云解析、腾讯云 DNSPod、Cloudflare 等)
- 添加一条TXT 记录:
- 主机记录:
_esaauth - 记录值:控制台提供的
verify_xxx值 - TTL:默认
- 主机记录:
- 保存后等待 1-5 分钟,返回 ESA 控制台点击“点击验证”
- 验证通过后,页面显示“已激活”状态
添加
_esaauth的 TXT 记录不会影响现有网站访问,流量只有在配置 CNAME 解析后才会切换到 ESA。
步骤四:添加 DNS 记录(配置加速域名)
4.1 在 ESA 控制台添加记录
- 进入站点详情页,左侧导航栏选择“DNS → 记录”
- 点击“添加记录”,填写以下信息:
| 配置项 | 说明 | 示例 |
|---|---|---|
| 记录类型 | 源站是 IP 选 A/AAAA;源站是域名选 CNAME | A |
| 主机记录 | 子域名前缀,如www、blog、api | www |
| 记录值 / 源站 | 源站服务器的公网 IP 或域名 | 198.2.XX.XX |
| 代理加速 | 必须开启,否则只是普通 DNS 解析 | ✅ 开启 |
| 回源协议 | 建议选择“协议跟随” | 协议跟随 |
| 回源端口 | 若源站前有 Nginx 反代,填 80/443;若直接访问源站应用端口,填实际端口 | 443 |
| 业务类型 | 根据实际业务选择 | 网站页面 |
- 点击“下一步”,选择是否使用规则模板(新手建议先使用默认模板)
- 保存后,ESA 会生成一个专属的 CNAME 记录值(如
www.example.com.a1.initmm.com)
4.2 在 DNS 服务商修改解析
- 复制 ESA 提供的 CNAME 值
- 前往你的DNS 服务商,将对应子域名的解析改为CNAME:
- 记录类型:CNAME
- 主机记录:
www(或你配置的子域名前缀) - 记录值:粘贴 ESA 提供的 CNAME 地址
- TTL:默认
- 保存后等待生效
4.3 确认生效
- 返回 ESA 控制台,在 DNS 记录列表中查看CNAME 状态
- 显示为“已配置”即表示生效
⚠️ DNS 解析生效通常需要数分钟至数小时,如果状态一直显示"待配置",请耐心等待或检查 DNS 服务商配置是否正确。
步骤五:配置 SSL/TLS 证书(启用 HTTPS)
方式一:使用 ESA 免费证书(推荐)
- 进入站点详情页,左侧导航栏选择“SSL/TLS → 边缘证书”
- 点击“申请免费证书”
- 选择证书颁发机构(推荐 Let’s Encrypt)
- 若域名在阿里云 DNS 托管,可开启“托管 DCV”:
- 在 DNS 服务商添加一条 CNAME 记录:
- 主机记录:
_acme-challenge(Let’s Encrypt)或_dnsauth(DigiCert) - 记录值:
<hostname>.<站点ID>.dcv.aliyun-esa.com - TTL:10 分钟(推荐)
- 主机记录:
- 在 DNS 服务商添加一条 CNAME 记录:
- ESA 会自动为你的域名申请并部署证书
- 等待证书状态显示为“正常”即可
方式二:上传自定义证书
- 若你已有 SSL 证书(如通过 acme.sh 或阿里云 SSL 购买的证书)
- 在“边缘证书”页面点击“上传证书”
- 填写证书名称,粘贴证书内容(PEM 格式)和私钥内容
- 点击保存,ESA 会自动部署到全球边缘节点
证书部署后,ESA 会自动处理 HTTPS 握手和证书续期,你无需在源站配置证书。
步骤六:配置安全防护
6.1 开启 DDoS 防护
- 进入站点详情页,左侧导航栏选择“安全防护”
- 找到“DDoS 防护”,确认状态为“已开启”
- ESA 默认提供Tbps 级的 DDoS 清洗能力,恶意流量在边缘节点直接丢弃
6.2 配置 WAF
- 在“安全防护”页面选择“WAF”
- 开启“Web 应用防火墙”
- 选择防护模式:
- 宽松模式:仅拦截明显恶意请求,误杀率低
- 正常模式:平衡防护与误杀(推荐)
- 严格模式:拦截所有可疑请求,适合高安全要求场景
- 可自定义规则:如拦截特定 IP、拦截 SQL 注入特征、限制请求频率等
6.3 配置 CC 防护与 Bot 管理
- 在“安全防护”页面找到“CC 防护”
- 开启后设置阈值:如单 IP 每秒请求数超过 1000 则自动拦截
- 配置“Bot 管理”:识别并拦截恶意爬虫、刷量程序,同时放行搜索引擎蜘蛛
步骤七:配置速度优化
7.1 配置边缘缓存规则
- 进入站点详情页,左侧导航栏选择“缓存”
- 点击“添加缓存规则”:
| 资源类型 | 缓存时间建议 |
|---|---|
| 静态图片(.jpg/.png/.webp) | 30 天 |
| CSS / JS 文件 | 7 天 |
| HTML 页面 | 根据更新频率,可设置 0(不缓存)或 1 小时 |
| API 接口(/api/*) | 0(不缓存)或短时间缓存 |
- 可配置“缓存键”规则,如忽略 URL 参数中的
utm_source等跟踪参数,提高缓存命中率
7.2 开启资源压缩
- 左侧导航栏选择“速度与网络 → 速度优化”
- 开启Gzip 压缩和Brotli 压缩
- 开启图像转换:ESA 可自动将 JPG/PNG 转换为 WebP/AVIF,减少 50%+ 图片体积
7.3 配置协议优化
- 在“速度与网络 → 速度优化”页面
- 开启HTTP/2和HTTP/3 (QUIC)
- 开启IPv6 访问(ESA 默认免费开启)
- 若业务需要,可开启WebSocket或gRPC支持
步骤八:使用 Pages 部署静态网站(进阶)
如果你有一个纯前端项目(如 Vue/React/Hexo/VitePress),无需购买服务器,直接用 ESA Pages 托管。
8.1 创建 Pages 项目
- 进入 ESA 控制台,左侧导航栏选择“边缘计算 → 函数和 Pages”
- 点击“创建”,选择“导入 GitHub 仓库”
- 授权 ESA 访问你的 GitHub 账号,选择要部署的仓库和分支(默认
main) - 填写构建信息:
- 安装命令:
npm install - 构建命令:
npm run build - 静态资源目录:
./dist或./build
- 安装命令:
- 点击“开始部署”
8.2 使用配置文件(推荐)
在项目根目录创建esa.jsonc文件:
{ "name": "my-blog", "entry": "./src/edge.js", "installCommand": "npm install", "buildCommand": "npm run build", "assets": { "directory": "./dist", "notFoundStrategy": "404Page" } }配置说明:
| 配置项 | 说明 | 值 |
|---|---|---|
name | 项目名称 | my-blog |
entry | 边缘函数入口文件 | ./src/edge.js(可选) |
installCommand | 安装依赖命令 | npm install |
buildCommand | 构建命令 | npm run build |
assets.directory | 静态资源目录 | ./dist |
assets.notFoundStrategy | 404 处理策略 | 404Page或singlePageApplication |
singlePageApplication适用于单页应用(SPA),会返回index.html和 200 状态码;404Page会返回404.html和 404 状态码。
8.3 绑定自定义域名
- 部署成功后,Pages 会提供一个默认的
*.er.aliyun-esa.net域名 - 进入项目设置,点击“添加域名”
- 输入你的子域名(如
blog.example.com) - ESA 会自动创建对应的 DNS 记录和 CNAME 值
- 前往 DNS 服务商添加 CNAME 解析,等待生效后即可通过自定义域名访问
步骤九:使用边缘函数实现动态逻辑(进阶)
边缘函数让你在离用户最近的节点运行 JavaScript/TypeScript 代码。
9.1 创建边缘函数
- 进入 ESA 控制台,左侧导航栏选择“边缘计算 → 函数和 Pages”
- 点击“创建”,选择“函数模板”(如 Hello World、请求转发、URL 重定向)
- 填写函数名称和描述,预览代码后点击“提交”
- 系统构建完成后,会生成一个公共域名用于预览
9.2 编写函数代码
以下是一个"根据用户地理位置返回不同内容"的示例:
// 边缘函数示例:Geo 分流exportdefaultfunction(request){constcountry=request.headers.get('cf-ipcountry')||'CN';if(country==='US'){returnnewResponse('Hello from US Edge Node!',{status:200});}returnnewResponse('你好,来自边缘节点!',{status:200});}9.3 绑定触发器(域名)
方式一:域名绑定(全部流量)
- 在函数详情页,切换至“域名”页签
- 点击“添加域名”,输入子域名(如
api.example.com) - 复制该域名对应的CNAME 值
- 前往 DNS 服务商添加 CNAME 解析
- 返回 ESA 控制台,确认CNAME 状态变为“已配置”
方式二:路由配置(部分流量)
- 在函数详情页,切换至“域名”页签
- 点击“添加路由”
- 填写路由名称,选择目标站点
- 选择路由模式:
- 简单模式:基于 URL 前缀匹配,如
api.example.com/* - 自定义模式:组合多个条件(请求头、Cookie、请求方法等)
- 简单模式:基于 URL 前缀匹配,如
- 保存后,只有匹配规则的请求才会触发边缘函数
9.4 调试与发布
- 在函数代码编辑页面右侧,有调试工具
- 构造 HTTP 请求(方法、Header、Body),点击“请求”查看响应结果
- 调试无误后,点击“生成版本”
- 切换至“部署”页签,选择版本并“发布”到生产环境
步骤十:验证加速与防护效果
10.1 验证加速效果
- 打开浏览器,按F12进入开发者工具,切换到Network面板
- 访问你的加速域名,查看静态资源的响应头
- 若看到
cf-cache-status: HIT或x-esa-cache: HIT,说明资源已从边缘节点缓存命中 - 使用 ping.chinaz.com 或 boce.com 测试全国多地访问速度
10.2 验证安全防护
- 在 ESA 控制台“安全防护”页面查看“攻击日志”
- 尝试用工具模拟 SQL 注入(如在 URL 后加
?id=1' OR '1'='1),观察是否被 WAF 拦截 - 查看“Bot 管理”报表,确认恶意爬虫被识别并拦截
10.3 查看数据分析
- 进入“站点概况”和“数据分析”页面
- 查看带宽、请求数、缓存命中率、攻击拦截次数等核心指标
- 开启“实时日志”推送,将日志投递到 SLS 或 Kafka,进行深度分析
第三部分:常见问题排查
| 问题 | 排查方法 |
|---|---|
| CNAME 状态一直"待配置" | 检查 DNS 服务商是否正确添加 CNAME;确认没有旧的 CNAME 记录冲突;等待 10-30 分钟 |
| 网站打不开,提示 525/526 | 检查源站是否正常运行;确认回源协议和端口是否正确;若源站是阿里云 ECS,检查域名是否已完成备案接入 |
| HTTPS 证书报错 | 确认证书是否已部署且状态为"正常";检查证书是否过期;尝试重新申请免费证书 |
| 缓存不生效 | 检查缓存规则是否匹配当前 URL;确认"代理加速"已开启;尝试在控制台"清除缓存" |
| WAF 误拦截正常请求 | 将 WAF 模式从"严格"改为"正常";在"规则"中添加白名单;查看拦截日志分析原因 |
第四部分:总结
通过本文,你已经了解了:
技术层面:
- ESA 的"四层一体"架构设计(Anycast 调度 → 安全防护 → 边缘计算 → 回源分析)
- Anycast 路由、边缘缓存、零信任安全等核心技术原理
- ESA 与传统 CDN/DCDN 在定位、能力、架构上的本质差异
实操层面:
- ✅ 站点接入:根域名添加 → 归属权验证 → 子域名 CNAME 接入
- ✅ 安全加固:DDoS 原生防护 → WAF 规则 → CC/Bot 管理
- ✅ 性能优化:边缘缓存 → Gzip/Brotli 压缩 → HTTP/3 → 图像转换
- ✅ 进阶部署:Pages 静态托管 → 边缘函数动态逻辑
ESA 的核心价值在于将"加速"、“安全”、"计算"三个能力融合在离用户最近的边缘节点,形成"接入即安全,部署即全球"的新一代边缘云范式。对于追求极致性能和安全性的技术团队而言,理解并掌握 ESA 的架构原理与部署方法,是构建下一代高性能网络应用的重要技能。
本文基于阿里云 ESA 官方技术文档及边缘计算领域公开资料整理,如有更新请以官方最新版本为准。