内容分发网络

最后更新: 2025-07-10 20:16:44 +0800 +0800
tags: Cdn | Dns | Networking
原文以英文撰写。您正在阅读AI翻译版本。

内容分发网络(CDN)从靠近用户的边缘位置提供内容。根据提供商的能力,它可以缓存静态资源、 代理动态流量、终止 TLS、过滤攻击并优化连接。源站仍是权威应用;CDN 是具有明确缓存和路由策略的中间层。

将域名连接到 CDN #

运维人员配置一个源站,例如 https://origin.example.net,并为 www.example.com 创建 CDN 分发。 提供商会提供类似 example.cdnprovider.net 的主机名;随后创建 DNS 记录,通常是 CNAME, 将 www.example.com 指向该主机名:

text
www.example.com.  CNAME  example.cdnprovider.net.

在边缘节点,CDN 使用请求主机名识别分发,并向源站转发适当的 Host 标头。 由于 TLS SNI 和 HTTP 的 Host 标头能够识别目标虚拟主机,许多站点可以共享一个边缘 IP 地址。

DNS 根域通常不能包含 CNAME,因为它还必须保存 SOA 和 NS 记录。 提供商会通过 A/AAAA 别名功能、受支持时的 ANAME/ALIAS 记录或委派 DNS 来解决。 具体行为取决于 DNS 提供商。

有意选择缓存行为 #

缓存键通常包含主机名、路径、选定的查询参数,以及选定的请求标头或 Cookie。 包含每个 Cookie 会破坏缓存效率;省略会改变响应的值,则可能将一个用户的内容泄露给另一个用户。

明确设置 HTTP 缓存指令。带版本号的资源通常可以长时间缓存:

text
Cache-Control: public, max-age=31536000, immutable

HTML 和个性化响应通常需要更短的生命周期、重新验证,或使用 private/no-store。 清除操作适合处理特殊更正,但内容寻址文件名和可预测的 TTL 是日常失效控制中更可靠的机制。

TLS、源站和安全 #

CDN 证书必须覆盖面向访问者的主机名。CDN 到源站同样使用 HTTPS,验证源站证书, 并限制源站访问,以便攻击者不能绕过边缘控制。根据平台不同,这可能意味着仅允许已发布的 CDN 出口网段通过防火墙、使用双向 TLS,或要求带签名的源站请求。

不要依赖客户端提供的转发标头进行访问决策。配置 CDN 设置受信任标头,并让源站仅在请求来自 CDN 时接受这些标头。上线前检查已认证路径、清除授权、源站超时和错误缓存规则。

评论

在 GitHub 上阅读或评论(发表评论需要登录)