CDN 边缘和源服务器之间的基本交互

281 阅读4分钟

携手创作,共同成长!这是我参与「掘金日新计划 · 8 月更文挑战」的第23天,点击查看活动详情

源站

什么是源站

CDN 拓扑区分您自己的源服务器和 CDN 提供商的边缘服务器。前者包含您网站的原始版本,而后者则托管其某些内容的缓存版本。

CDN 边缘服务器如何与源站交互

由于对源服务器上内容的许多更改都会传播到 CDN 的缓存服务器,因此两者会定期通信。

更新边缘服务器的最有效方法是让 CDN 自动从源中拉取新内容。效果较差的是推送方法,在该方法中,您需要使用对源所做的更改来更新 CDN。

我们的整个CDN指南(本条目只是其中的一小部分)讨论了CDN可以增强源站功能的方法,包括卸载其某些任务,提高其性能和安全性。

但是,以下五个问题简要介绍了 CDN 边缘和源服务器之间的基本交互:

1. 如何通过 CDN 将流量路由到源站?

若要正常运行,需要将 CDN 边缘服务器指定为所有入站 HTTP/S 流量的目标。这可以通过对域名系统 (DNS) 进行以下修改来实现:

  • 配置域的 A 记录,使其解析为 CDN 的 IP 范围
  • 将子域的 CNAME 记录指向 CDN 提供的相应子域

在这些更改之后,对域上任何 URL/资源的所有访问者请求都将通过 DNS 路由到 CDN 的边缘服务器之一 - 由于使用了任播路由,这通常是最接近单个访问者的服务器。

权威域名服务器

使用 DNS 将流量通过 CDN 路由到源站

2. CDN 如何保护我的源站?

作为所有 HTTP/S 流量的网关,CDN 非常适合检查传入的 HTTP/S 请求。这使其能够在Web应用程序攻击(例如SQL注入,XSS源服务器之前识别和过滤掉它们。同样的逻辑也适用于应用层 DDoS 和恶意机器人(例如,垃圾邮件发送者和抓取程序)。

此外,CDN 会将所有域解析请求路由到 CDN 提供商的 IP。这可以有效地隐藏源站的 IP 地址,并保护其免受直接到 IP 的攻击(例如,网络层 DDoS 泛洪)。

3. 加入 CDN 后,我的 IP 是否完全屏蔽?

不完全是。上面提到的重新路由机制虽然有效,但如果攻击者可以使用您域的历史记录或通过其他来源暴露攻击来暴露您的IP数据,则可以绕过。

因此,应采取其他步骤来保护您的 Web 服务器,包括:

  • 避免使用通用子域名 – 如果您的某些与域名相关的服务(例如FTP或邮件)不受CDN保护,则可以解析其子域名以发现您的来源的IP地址。这就是为什么在载入 CDN 后,应避免对这些服务使用通用子域。例如,将 ftp.mydomain.com 更改为 650Ftp.mydomain.com。
  • 更改 IP 地址 – 要阻止攻击者使用历史记录来发现您的源 IP,您应该在加入 CDN 后更改 IP 地址。这样做会使任何残余引用变得毫无用处。

4. CDN 可以从我的源站服务器卸载所有内容交付吗?

不太可能。虽然大多数CDN卸载了所有内容交付任务的很大一部分,但确切的数量取决于CDN的功能和您网站的细节。

CDN边缘服务器将能够缓存静态资源,包括图像,CSS样式表和JavaScript文件。仅此一项就可以节省超过50%的带宽使用量。

更高级的CDN还可以缓存动态生成的内容(例如,WordPress HTML文件,它们是动态创建的)。有了这样的功能,缓存潜力增加到60%-80%,甚至更多。

5. 如果我有多个源站或数据中心,CDN 可以做什么?

CDN 的反向代理特性允许它们充当负载均衡器并将流量分配到您的数据中心,同时控制传入流量的流,以最大限度地提高性能并减少服务器负载。

由于其边缘位置,CDN 服务器可以更好地了解传入流量。这使 CDN 能够采用应用层负载均衡算法,通过精确测量每个源服务器上的实际负载来提高流量分配效率。