做站点的人早晚会跟 CDN 打交道。图片多的电商页、软件包下载站、音视频点播、小程序静态资源甚至一些 API 场景只要用户量一上来回源带宽和首屏速度的问题就会冒出来。阿里云 CDN 是我用得比较久的加速服务之一从最早的纯静态图片加速到现在 OSS 私有 Bucket 回源、全站加速、HTTPS 证书自动续期这一套踩过的坑足够写一篇长文。这篇文章不会去抄控制台的操作手册而是把我实际接入和运维阿里云 CDN 时总结出来的完整思路、配置步骤和排查经验整理出来给正准备上 CDN 或者已经被 CDN 问题困扰的朋友做个参考。无论是刚从服务器直连切换到 CDN 的新手还是已经在用 CDN 但命中率一直上不去的运维这篇文章应该都能给你一些可以落地的建议。1. 先弄明白 CDN 在一套业务里到底扮演什么角色1.1 它和普通服务器最本质的区别很多朋友第一次接触 CDN 时容易把它理解成“一台放在云上的缓存服务器”。这个理解不算错但会限制你的排查思路。CDN 不是一台服务器而是一整套由边缘节点、智能调度系统和源站组成的分布式结构。用户访问你的域名时不会直接连到你的服务器而是先通过 DNS 解析到一个离他最近的边缘节点由这个节点响应用户请求。如果节点上已经有缓存内容就直接返回这个过程叫“命中”如果节点上没有边缘节点会代替用户向你的源站发起请求拿到内容后缓存下来再返回给用户这个过程叫“回源”。这一点非常重要。你在服务器上看到的访问日志其实只是 CDN 回源产生的请求而不是用户真实访问的全部流量。刚开始用 CDN 的人经常会有个疑问为什么我的 Nginx 日志里流量这么少但 CDN 控制台显示的带宽很高答案就在这里大部分请求都被边缘节点截胡了只有没命中缓存的请求才真正到达源站。这也意味着你评估源站压力时不能只看 Nginx 日志还要结合 CDN 的命中率曲线一起看。1.2 什么样的业务值得上 CDN不是所有业务都适合直接套 CDN。我见过最典型的错误是把登录接口、支付回调、实时消息这类强动态请求也一股脑挂到 CDN 上结果缓存没配上所有请求全部回源带宽没省多少反而多了一层链路延迟还变高了。根据我的经验适合 CDN 加速的场景主要有这几类静态资源分发HTML、CSS、JS、图片、字体这类文件内容不常变化缓存友好度最高上线后往往能把源站压力降低 80% 以上。大文件下载和软件分发安装包、镜像文件、模型权重文件等。这类场景 CDN 有专门的 Range 回源支持用户在下载时拖动进度或者分段请求不需要回源下载整个文件对源站和网络都友好。音视频点播短视频、长视频、音频课程等边缘节点的缓存和流媒体分发能力能明显降低首帧时间和卡顿率。动态内容加速有些业务接口响应本身不快但网络链路才是瓶颈比如跨地域调用、移动网络环境复杂。阿里云的全站加速DCDN可以做链路优化但注意这不是靠缓存解决的而是通过智能路由和连接优化来减少时延。判断一个业务适不适合 CDN我有一个笨办法看你的响应内容是否具备“可复用性”。同一个 URL 在短时间内反复被不同用户请求返回内容基本一致那它就可以缓存如果每个用户看到的都不一样那就不能缓存只能走链路优化。图片、静态文件当然没问题一些只读的列表页 API、配置下发接口其实也可以做短时间缓存前提是业务方接受一定延迟。1.3 CDN 节点、回源和 DNS 调度之间的关系理解了“命中”和“回源”这两个概念你就能看懂 CDN 的运作链条了。整个流程大致是这样的用户在浏览器输入你的加速域名。本地 DNS 向权威 DNS 发起解析请求。CDN 的 GSLB全局负载均衡系统根据用户 IP、地理位置、运营商、节点负载情况返回一个最优的边缘节点 IP。用户浏览器直接请求这个边缘节点。边缘节点检查缓存命中则直接返回未命中则回源站拉取内容并缓存。这里有一个很多人忽略的细节CDN 边缘节点也是有分层的。国内大型 CDN 通常有 L1边缘节点和 L2区域中心节点两层缓存。当一个边缘节点未命中时它会先在 L2 节点找找不到才会真正回源。这个机制的好处是即使同一个文件在多个边缘节点都未命中源站也只需要被请求一次L2 节点可以共享内容给不同边缘节点。理解这个层级对你排查“为什么回源量这么大”有帮助因为有时候问题出在缓存规则有时候出在 L2 命中率。2. 首次接入 CDN 前必须做好的四件事2.1 域名与备案检查接入 CDN 之前最容易卡住的不是技术问题而是域名合规问题。使用中国大陆节点的 CDN 加速服务加速域名需要完成 ICP 备案这个在控制台添加域名时系统会自动校验。很多朋友是域名在别处注册、服务器买了香港或海外区域以为可以绕开这一步结果添加域名时直接被拦下来。我的建议是提前完成两件事。第一确认加速域名已经备案成功且备案信息还在有效期内。第二确认你对这个域名有 DNS 解析权限因为后面需要添加 CNAME 记录。如果公司业务有多个子域名比如 img.example.com、static.example.com、download.example.com建议在规划阶段就想清楚哪些域名要走 CDN、哪些保持直连源站避免以后反复修改解析造成短暂不可用。这里也顺带说一句如果你的源站和 CDN 都在阿里云但域名之前在其他平台备案过仍然需要办理接入备案或确保主体在阿里云有备案信息具体以控制台提示为准。最好在采购服务器之后、正式上线之前就完成这个动作不然后续会非常被动。2.2 源站类型到底选 OSS、ECS 还是负载均衡阿里云 CDN 添加加速域名时会让你配置源站信息。源站类型看似简单但选错了后面改起来比较麻烦。我常用的选择逻辑是这样的源站是 ECS 实例适合静态资源较多、且已经部署在云服务器上的场景。可以直接填 ECS 的公网 IP也可以填 ECS 绑定的域名。需要注意的是如果你填了 IP那回源时 HTTP 请求头里的 Host 是怎么处理的这时候就要看“回源 HOST”这个参数。源站是 OSS Bucket适合把所有静态资源都放到对象存储里的场景。特别是图片、音视频等体量大的文件放在 OSS 再通过 CDN 加速回源走的是阿里云内网既快又省流量费。源站是 SLB 域名或其它域名适合源站本身做了负载均衡、或者源站域名指向多台服务器的情况。这种情况下 CDN 会按照域名解析结果自动负载不需要你在 CDN 侧再挂多台源站。所谓“回源 HOST”本质上是告诉源站我这次回源请求访问的是哪个站点。比如你源站服务器 IP 是 1.2.3.4这台服务器上跑着 abc.com 和 def.com 两个站点CDN 回源时如果只用 IP 访问服务器不知道你要访问哪个站点。这时就需要把回源 HOST 设置为对应的域名。很多人配完之后发现回源全部 404基本就是这里没配对。还有一点要注意RDS 数据库不能直接作为 CDN 源站因为 CDN 走的是 HTTP/HTTPS 协议它只能处理应用层内容。数据库数据必须通过后端的 API 接口输出对于这类接口除非是只读且可缓存的列表数据否则不建议配置 CDN 缓存最多走全站加速的链路优化。2.3 缓存规则的提前规划缓存规则是 CDN 配置里最核心的部分没有之一。控制台默认会有一套缓存策略但真实业务基本都要微调。我一般在接入前就会画一张“缓存规划表”明确什么类型的资源缓存多久、什么内容绝对不缓存。常见的缓存规划可以参考这个思路图片、JS、CSS、字体这类带哈希版本号的静态资源缓存时间可以设置 30 天甚至更长因为文件更新时 URL 会变旧缓存不影响。HTML 页面建议短缓存比如 5 到 10 分钟。因为 HTML 很可能引用新的 JS/CSS如果缓存太久发布新版本后用户拿到的还是旧页面。API 接口除非业务方明确接受缓存否则默认设置不缓存或者只缓存极短时间比如 1 分钟。带登录态、购物车、个性化内容的接口绝对不缓存必须直接回源。另外要关注 URL 参数。CDN 默认情况下不同参数会生成不同的缓存 key比如 product?id1 和 product?id2 会被当成两个不同的内容。如果你的资源 URL 后面带了随机参数或者时间戳即使内容一样也会导致缓存命中率极低。这时候可以在缓存配置里开启“过滤 URL 参数”让 CDN 忽略部分参数只按路径缓存。这个优化对命中率的提升非常明显但前提是你业务上不依赖这些参数区分内容。2.4 证书和 HTTPS 的准备工作现在新上线的业务基本都要求全站 HTTPSCDN 接入自然绕不开证书问题。我建议在添加加速域名之前就把证书准备好否则域名一旦切换 CNAMEHTTPS 又没配好用户访问会直接看到证书告警非常影响体验。证书来源常见有三种。第一种是阿里云 SSL 证书服务里申请的免费证书一般单域名有效期现在比较短到期前需要手动或自动续期。第二种是自己用 certbot 申请的 Let‘s Encrypt 证书免费但有效期只有 90 天需要配置自动续期。第三种是商业证书或泛域名证书适合有多级子域名的业务。无论哪种证书上传到 CDN 控制台时都要保证证书链完整也就是证书文件、私钥、中间证书都要正确配置不然某些浏览器会不认。还有一个容易被忽略的点回源也需要证书。CDN 回源时同样可以走 HTTPS如果你的源站强制 HTTPS源站证书的有效性也会影响回源是否成功。很多时候 CDN 配置看起来没问题但回源一直报 526 或 502就是因为源站证书过期或者没有正确配置完整证书链。3. 阿里云 CDN 接入实操从添加域名到验证生效3.1 控制台添加加速域名与参数选择接入 CDN 的实际操作重点在控制台的几个选择项上。登录阿里云 CDN 控制台进入“域名管理”点击“添加域名”需要填写加速域名、业务类型、源站信息等。业务类型这里很多人只是随手选一个实际上它决定了 CDN 节点和缓存策略的默认行为建议按真实场景来选图片小文件适用于网页图片、小体积静态文件整体加速效果最明显。大文件下载适用于安装包、压缩包、镜像等开启了大文件分片和 Range 回源支持。音视频点播适用于音视频文件支持流媒体相关回源配置。直播流媒体适用于直播场景需要配合直播服务使用。全站加速适用于混合动态和静态内容的站点会启用动态路由加速但价格也更高。源站信息按照前面说的规划填好端口默认 80 和 443如果你的源站用了自定义端口需要在这里同步修改。回源 HOST 默认会带出加速域名如果你的源站站点名和加速域名不一致一定记得改成源站实际识别的域名。配置完成后会进入审核状态这一步一般是自动的正常几分钟到几小时不等。审核通过后控制台会给你一个 CNAME 地址这个地址长得像“yourdomain.example.com.w.cdngslb.com”之类。拿到这个 CNAME 地址接入工作才正式进入解析阶段。3.2 配置 CNAME 解析并验证生效CNAME 解析是在你的 DNS 服务商处操作的不是阿里云 CDN 控制台里改。假设你的加速域名是 img.example.com你需要到 DNS 管理处给 img 这个主机记录添加一条 CNAME指向 CDN 分配的地址。解析生效后CDN 才会接管该域名的流量。验证 CNAME 是否生效最直接的办法就是一条命令dig img.example.com如果输出的 CNAME 记录里有 CDN 分配的域名说明解析已经生效。或者用 nslookup 也可以。对于刚刚切换的域名全球 DNS 生效需要时间短则几分钟长则十几个小时运营商 DNS 缓存越久生效越慢。解析配置只是第一步真正验证 CDN 有没有正常工作要看响应头。用 curl 请求一个静态资源curl -sI https://img.example.com/static/js/app.js观察响应头里有没有 CDN 特征字段。阿里云 CDN 一般会返回 Via 头、X-Cache 字段可能显示 HIT 或 MISS还有 EagleId 之类的请求追踪 ID。如果是第一次请求X-Cache 是 MISS再次请求同一个文件变成 HIT那说明 CDN 已经在缓存内容了。这个验证方法在你排障时也特别有用因为一眼就能看出请求到底命中缓存还是回源了。CNAME 切换有一个风险点我要提醒如果你原来在 DNS 里配的是 A 记录指向源站 IP改成 CNAME 之后源站 IP 就不再对外暴露了。这本来是好事但如果你有部分业务没有走 CDN仍然直接访问源站 IP那可能会受影响。切换前最好把业务梳理一遍确认所有公网流量都走加速域名再动 DNS。3.3 HTTPS 证书绑定与自动续期域名解析生效后紧接着就是配置 HTTPS。在 CDN 控制台“域名管理”里找到该域名进入“HTTPS 设置”可以上传证书或选择阿里云证书服务里已有的证书。这里有几个选项需要重点说清楚开启 HTTP/2建议打开对弱网环境下的小文件并发加载有明显提升。强制 HTTPS 跳转如果你希望所有 HTTP 请求自动 301 到 HTTPS开启这个开关。注意如果源站只支持 HTTP这个开关不影响回源协议。回源协议设置可以设置回源用 HTTP、HTTPS 或跟随用户请求协议。源站没有证书的话回源协议选 HTTP 即可因为公网传输这段已经被 CDN 到用户的 HTTPS 保护了源站和 CDN 之间走默认的内网链路风险相对可控。证书续期是个高频问题。阿里云免费证书有效期较短到期前建议直接在证书服务控制台申请新证书然后回到 CDN 的 HTTPS 设置里更新证书。如果你的证书是 certbot 自动申请的可以写一个小脚本在续期成功后自动调用阿里云 OpenAPI 更新 CDN 域名证书但实现起来有一定门槛适合有开发能力的团队。对于大多数中小站点我建议直接用阿里云证书服务里的免费证书到期前控制台会有提醒手动更新一下也就一两分钟的事。还有一个小细节证书快到期时如果你更换了证书但类型不匹配比如原来是泛域名证书现在只上传了单域名证书会导致除主域名之外的子域名全部失效。更换证书后建议立刻用不同子域名的浏览器无痕模式访问一遍验证覆盖范围。3.4 OSS 联动私有 Bucket 回源与内网免流静态资源体量比较大的业务我通常建议把文件放到 OSS然后 CDN 回源指向 OSS Bucket。这个组合的好处在于OSS 本身就具备高可用和低成本存储能力CDN 回源走的是阿里云内网不产生公网流量费整体流量成本可以压得很低。配置方式很简单添加域名时源站类型选择“OSS 域名”然后选择对应的 Bucket 即可。如果 Bucket 是私有的也就是不能直接公网访问需要在 CDN 控制台打开“私有 Bucket 回源”功能。开启后CDN 节点在回源时会对 OSS 发起内部签名请求用户访问时不要求 OSS 对外开放。这样你的源站资源不会因为直接从 OSS 访问而暴露同时也不需要为公网读流量付费是比较推荐的形态。使用过程中有几个点需要留意。第一Bucket 和 CDN 必须在同一个地域如果跨地域回源内网优势就没了。第二OSS 上文件的 Content-Type 一定要配好文本、图片、音视频的类型不对会导致浏览器解析异常或直接下载常见的坑是 JSON 文件被识别成 octet-stream。第三如果你在 OSS 上开启了静态网站托管注意默认首页配置和 404 规则要跟业务匹配否则 CDN 回源取不到 index.html 时可能返回错误页。3.5 源站迁移时的 CDN 配合很多朋友咨询过“怎么做到准不停服、不丢数据地迁移到阿里云 ECS”。CDN 在这种迁移里其实是个很好的解耦工具因为用户流量并不直接打到源站源站怎么切用户是无感知的。我的做法大致是这样的。先在阿里云 ECS 上部署好新环境用测试域名验证接口和静态资源都正常。接下来去 CDN 控制台修改源站信息把源站地址从旧环境切换成新 ECS 的 IP 或新绑定的域名。由于 CDN 边缘节点已经缓存了大量静态资源切换源站时大多数请求仍然直接命中缓存真正回源的请求很少所以对用户的影响窗口极小。关键点在切换之后。源站切换后边缘节点上旧缓存资源还会继续存在如果新源站的资源内容和旧源站不完全一致就会出现“部分用户看到新内容、部分用户看到旧内容”的情况。解决办法是发布前先在 CDN 控制台做一次“刷新”把关键页面和资源 URL 清掉缓存让边缘节点强制回源拉取新内容。如果资源量很大还可以用“预热”功能提前把新内容加载到边缘节点用户访问时直接命中既不会出现版本混乱也能减小区分切换时的回源压力。数据迁移方面如果是文件类数据一般 rsync 同步到新服务器或者 OSS如果是数据库数据需要在业务低峰期做全量加增量同步确认数据一致后再切换源站。CDN 这一层只要配置好迁移过程基本不需要停机这也是我用 CDN 做迁移时最省心的部分。4. 上线后最常见的问题排查与避坑4.1 CNAME 配置正确但访问异常接入 CDN 后最常见的异常就是“解析没问题但网站打不开”。先别急着怀疑 CDN按下面几个点排查大概率能定位到问题。第一回源 HOST 对不对。这个问题前面提过如果源站是多站点服务器回源 HOST 配错源站返回 404CDN 把 404 也当正常响应返回给用户。这种情况下页面在直连源站时正常走 CDN 就 404非常典型。第二源站安全组有没有放行 CDN 回源 IP。如果源站 ECS 的安全组只放行了来自公网特定 IP 的访问CDN 节点回源时就会被防火墙拦住表现为 CDN 控制台回源失败率飙升源站日志里根本没有请求记录。阿里云提供了 CDN 回源 IP 段列表需要把这些网段加到安全组白名单里。第三端口和协议不匹配。源站监听 8080CDN 回源配置里用的是 80自然失败源站只支持 HTTPCDN 回源却开启了 HTTPS也会失败。这类问题的排查顺序我一般是“先看回源 HOST再看安全组再看协议端口”。因为这三种情况基本都是配置层面的低级错误只要有一个细节没对齐CDN 就无法正常工作。4.2 缓存命中率低与缓存不生效缓存命中率低于 90% 时CDN 带来的成本优势基本体现不出来。我见过命中率只有 20% 的站点原因通常是下面几个。最普遍的是源站没有正确的缓存响应头。CDN 在决定是否缓存时会遵循源站的 Cache-Control 和 Expires 头。如果你的源站动态请求默认输出 Cache-Control: no-cache 或 privateCDN 即使配置了缓存规则也不会缓存这些内容。解决办法是让开发统一梳理静态资源输出 long-cache 头API 输出 no-cache 头两边的语义要一致而不是靠 CDN 端强制覆盖一切。其次是 URL 参数导致缓存 key 碎片化。比如你的图片 URL 是 /img/logo.png?timestamp123每刷一次参数就变一次CDN 认为每个 URL 都是新内容全部回源。这在有统计工具、动态加时间戳的站点里非常常见。开启忽略 URL 参数之后命中率能立刻拉上来但前提是这些参数确实不影响内容输出。再次是缓存规则没有覆盖对应目录。比如你新增了一个 /static 目录但缓存规则里只写了 /assets那 /static 下的文件全部走默认回源策略命中率自然低。接入 CDN 后新增目录时一定要同步检查缓存规则。4.3 跨域报错用了 CDN 之后前端同事可能会突然反馈字体文件加载不了或者 Canvas 画布被污染控制台报 CORS 错误。这是因为 CDN 域名和页面域名不一致浏览器的同源策略把请求拦了需要在 CDN 侧配置跨域响应头。在阿里云 CDN 控制台的“HTTP 头设置”里可以自定义添加 Access-Control-Allow-Origin 响应头。一般如果你只有一个页面域名直接设置成该域名即可如果资源需要被多个域名共用可以用“*”。需要注意的是当你同时通过 CDN 和源站直连访问同一资源时跨域头的配置需要两边保持一致否则会出现“CDN 能访问、源站直连报跨域”这种诡异问题。我建议把跨域头放在源站层配置CDN 侧只做透传这样架构更统一。还有一种情况是字体文件跨域。字体文件即使在同域名情况下有时也需要 CORS很多站点因为没给 .woff2 后缀的文件加跨域头导致开发环境正常、上线后字体加载不出来。排查时用 curl 带 Origin 头访问字体 URL看返回的响应头里有没有 Access-Control-Allow-Origin一目了然。4.4 怎么判断一个 IP 是不是 CDN 节点这个问题的实际场景是你在源站日志里看到大量来自陌生 IP 的请求想知道是正常 CDN 回源还是恶意请求。判断方法有几个。最简单的是看响应头。用 curl 发送请求时观察响应头里有没有 CDN 特征头比如 Via、X-Cache、EagleId、AliCDN-Server 之类如果有说明当前响应确实经过 CDN。但这种方法只能验证域名走了 CDN不能判断某个 IP 是不是节点因为请求最终可能被调度到不同节点。更靠谱的办法是反向验证。用 nslookup 或 dig 查询该 IP 的反向解析结果CDN 节点的 IP 通常反解为类似 *.cdngslb.com 的域名。也可以去阿里云的 IP 归属查询工具里查看 IP 归属和网络运营商如果查询结果显示该 IP 属于阿里云 CDN 节点段那基本可以确认是正常回源。实际运维中还有个经验如果源站收到大量来自 CDN 回源 IP 段但 UAUser-Agent非常规的请求有可能是被其他站点的流量误命中也可能是攻击者直接伪造了 CDN 节点 IP。这时候不要只依赖 IP 判断建议结合 CDN 日志、请求特征、频率阈值做综合判断必要时在 CDN 侧开启访问控制或 WAF 功能。4.5 证书告警与续期失败证书问题虽然不复杂但一旦出现就很急因为用户侧会直接看到“您的连接不是私密连接”。我总结过几个常见的证书告警场景。场景一过期没发现。免费证书有效期越来越短如果没设置监控很容易突然发现证书已经过期一天了。解决方法是提前在证书服务控制台配置到期提醒短信、邮件都打开。场景二证书链不完整。上传证书时只贴了域名证书没贴中间证书导致一些严格校验的浏览器报警。这种情况在证书到期续期时最容易发生因为重新上传时容易漏掉中间证书。场景三更换证书后没覆盖所有子域名。泛域名证书和单域名证书混着用换错了导致部分子域名失效。场景四只改了 CDN 侧忘了改源站证书。CDN 到源站走 HTTPS 时源站证书如果过期或不可信回源同样会失败。如果你用 certbot 管理证书建议定期检查服务状态和续期日志避免自动续期失败后没有及时发现。最稳妥的方式还是把证书管理接入监控体系证书剩余有效期做成指标统一报警。5. 实测调优与成本控制5.1 预热、刷新与缓存规则调优CDN 上线后的调优主要围绕三个操作预热、刷新、缓存规则调整。预热让资源提前从源站拉取到边缘节点用户访问时直接命中。适合用在版本发布、大促活动、新资源上架这些场景。比如客户端 App 发布新版本时新版的安装包都可以提前预热避免发布瞬间回源压力过大。预热操作在控制台按 URL 提交即可注意一次提交的数量和频率有配额限制大批量预热要分批次执行。刷新用于主动清理缓存。发布新版本时HTML 页面、JS/CSS 文件的旧缓存需要清理否则用户会看到旧页面。控制台支持 URL 刷新和目录刷新目录刷新会清掉该目录下所有缓存操作快但影响面大建议优先使用 URL 刷新只清理确实变化的资源。缓存规则调优方面除了前面提到的忽略 URL 参数还有几个实用开关值得关注。一个是 Range 回源开启后大文件下载和视频拖动时CDN 只回源请求部分字节能显著降低回源流量。另一个是分片缓存适用于视频点播场景将文件切成多个分片缓存处理能让不同节点更高效地缓存大文件。还有一个是回源超时时间如果源站偶尔慢适当调大超时时间能减少回源失败率但也不能设太大否则请求堆积会拖垮源站。5.2 防盗链、URL 鉴权与访问控制资源被其他网站盗链是用了 CDN 之后一定会碰到的事情。图片、视频、安装包被第三方站点直接引用流量费用全算在你头上必须做访问控制。最基础的是 Referer 防盗链控制台直接配置设置白名单后只有来自指定来源的请求才会正常返回资源。这个方法简单但 Referer 是可以伪造的适合用来挡小白盗链不适合放专业的恶意用户。更可靠的方案是 URL 鉴权也叫时间戳签名。CDN 会在资源 URL 后面附带一个根据密钥和时间戳生成的签名用户请求时 CDN 会校验签名和过期时间只有合法的请求才会返回内容。这个方案可以控制资源有效期比如视频播放链接生成后 30 分钟失效某些下载链接验证通过后可访问 24 小时特别适合付费内容、私密下载、临时分享这类场景。实现上业务后端生成签名 URL前端拿到后直接拼在资源链接上即可阿里云控制台的文档里有规则示例照着实现就行。此外还有 IP 黑白名单和 UA 黑白名单。IP 黑名单适合拦截特定地域的恶意请求UA 黑名单适合拦截空 UA 或非正常浏览器的请求对刷量攻击有一定的防护作用。对于流量大、内容价值高的站点建议在 CDN 之上再叠加 WAF 能力把 Web 攻击挡在边缘层。5.3 成本控制带宽封顶、流量包与监控告警CDN 的成本跟业务体量直接相关控制成本的前提是清晰掌握每个域名的流量和带宽走势。阿里云控制台提供实时监控可以按域名查看带宽曲线、请求数、命中率等指标建议把核心域名的监控图表放到一个自定义大盘里日常巡检扫一眼就能发现问题。带宽封顶这个功能我建议每个正式使用的域名都开启。它可以在带宽超过设定阈值后自动执行预设动作比如限速或者直接返回 403。这个功能不是为了限制正常业务而是为了防止异常流量把预算打爆。比如你的资源链接被恶意扩散一夜之间带宽飙到顶如果没有封顶机制账单会很难看。设置了封顶之后至少可以给自己留出反应时间。流量包方面如果业务相对稳定按流量包预付通常比按量后付便宜。但要注意流量包是有有效期的不要一次性囤太多用不完的流量包到过期就浪费了。比较合理的做法是先按量付费跑一两个星期拿到日均流量峰值后再按历史数据的 80% 左右采购流量包留一点余量给突发场景。监控告警一定要配域名维度、带宽维度、命中率维度各配几条告警规则阈值设置到合理水平避免告警太多变成狼来了也避免真的问题了没人知道。我在实际使用中还有一个小习惯每次发版后除了常规的刷新操作会把核心页面和几个关键静态资源做一次预热让新内容提前进入边缘节点。这个小动作看似多此一举但能明显减少发布瞬间的回源峰值。CDN 的绝大多数问题都不是 CDN 本身的问题而是源站没配合好。把源站的响应头、日志、证书、目录结构都理清楚了CDN 这份工就稳定了一大半。