Google Cloud CDN 全方位教程
目录
- 什么是 Google Cloud CDN?
- 为什么使用 Google Cloud CDN?(核心优势)
- 工作原理概览
- 核心概念
- Origin (源站)
- Backend Service (后端服务)
- URL Map (URL 映射)
- Load Balancer (负载均衡器)
- 实战教程:一步步配置 Google Cloud CDN
- 步骤 1:准备工作
- 步骤 2:创建后端服务
- 步骤 3:创建 URL 映射
- 步骤 4:创建全局外部 HTTPS 负载均衡器
- 步骤 5:配置域名和 SSL 证书
- 步骤 6:部署并测试
- 高级配置与最佳实践
- 缓存键
- 缓存模式
- 缓存所有内容
- 自定义错误页面
- 安全性与认证
- 性能优化
- 监控与日志
- 常见问题与故障排查
什么是 Google Cloud CDN?
Google Cloud CDN (Content Delivery Network,内容分发网络) 是一个分布式网络服务,旨在将你的网站或应用内容缓存到离用户地理位置更近的 Google 边缘节点上。

当用户请求你的内容时,他们不是直接从你的源服务器(如虚拟机或存储桶)获取,而是从最近的边缘节点获取,这带来了以下好处:
- 更快的加载速度传输距离缩短,延迟降低。
- 减少源服务器负载:大部分请求由边缘节点处理,源服务器压力减小。
- 更高的可扩展性:轻松应对流量高峰,无需担心源服务器带宽瓶颈。
- 全球覆盖:利用 Google 强大的全球网络基础设施。
为什么使用 Google Cloud CDN?(核心优势)
- 与 Google Cloud 深度集成:与 Compute Engine、Google Kubernetes Engine (GKE)、Cloud Storage、Cloud Functions 等服务无缝集成。
- 智能缓存:可以智能地缓存动态内容,甚至对 API 响应进行缓存,极大提升性能。
- HTTP/2 和 HTTP/3 支持:利用现代协议提升传输效率。
- 精细化的缓存控制:通过缓存键和缓存模式,你可以精确控制哪些内容被缓存、如何缓存。
- 安全可靠:与 Cloud Armor (WAF) 和 Identity-Aware Proxy (IAP) 集成,提供强大的安全防护。
- 成本效益:按使用量计费,没有前期硬件投入,对于流量大的应用可以有效降低带宽成本。
工作原理概览
- 用户请求:全球各地的用户通过你的域名(如
www.example.com)访问你的网站。 - DNS 解析:用户的 DNS 请求指向 Google Cloud 的全局负载均衡器(Anycast IP 地址)。
- 流量路由:Google 的网络基础设施将用户的请求路由到地理位置上最近的边缘节点 PoP (Point of Presence)。
- 边缘节点检查缓存:
- 命中:如果请求的内容在边缘节点的缓存中,并且仍然有效(未过期),则直接从缓存返回给用户,这是最快的方式。
- 未命中不在缓存中或已过期,边缘节点会代表用户向你的源站 发起请求。
- 源站响应:源站处理请求,并将响应返回给边缘节点。
- 缓存并响应:边缘节点将源站的响应缓存起来,然后将其返回给原始用户,后续相同或类似的请求就可以直接从缓存中服务。
核心概念
在配置之前,理解以下几个核心概念至关重要:
-
Origin (源站):你的应用程序或内容的实际来源,它可以是:
- 后端服务:指向 Compute Engine VM 实例组、GKE 集群或无服务器网络端点组。
- Cloud Storage 存储桶:非常适合托管静态网站(HTML, CSS, JS, 图片, 视频)。
- 外部后端:指向你数据中心或其他云服务商的服务。
-
Backend Service (后端服务):定义了如何将流量路由到你的 Origin,它包含健康检查、负载均衡算法以及最重要的——是否启用 CDN。
(图片来源网络,侵删) -
URL Map (URL 映射):将传入的 URL 路径规则与一个后端服务关联起来,你可以配置
www.example.com/images/*路径下的所有请求都由一个特定的后端服务处理。 -
Global External HTTP(S) Load Balancer (全局外部 HTTPS 负载均衡器):这是整个设置的入口,它接收来自全球的流量,并根据 URL Map 的规则将流量分发到相应的后端服务,它负责 SSL/Termination (SSL 终止)、基于地理位置的路由等。
实战教程:一步步配置 Google Cloud CDN
我们将以一个最常见的场景为例:为一个托管在 Compute Engine VM 上的静态网站启用 CDN。
步骤 1:准备工作
- 创建 GCP 项目:如果你还没有,请在 Google Cloud Console 中创建一个新项目。
- 启用计费:确保你的项目已启用计费。
- 创建 VM 实例:
- 创建一个 Compute Engine VM 实例作为源站。
- 在启动脚本中安装一个简单的 Web 服务器,Nginx。
- 创建一个测试
index.html文件,并放在 Web 服务器的根目录(/var/www/html)。 - 重要:在 VM 的“防火墙”标签页,创建一个防火墙规则,允许来自
tcp:80(HTTP) 和tcp:443(HTTPS) 的流量,或者,在创建实例时勾选“允许 HTTP 流量”和“允许 HTTPS 流量”。
- 获取 VM 的外部 IP 地址:记下你的 VM 的外部 IP 地址,我们稍后会用到。
步骤 2:创建后端服务
- 在 GCP Console 中,导航到 网络服务 > 负载均衡 > 后端服务。
- 点击 “创建后端服务”。
- 基本信息:
- 名称:
my-cdn-backend。 - 协议:选择
HTTP或HTTPS,为了简单,我们先选HTTP,如果源站支持 HTTPS,建议选HTTPS。
- 名称:
- 后端配置:
- 平衡模式:保持默认的
LEAST_REQUEST。 - 后端类型:选择 “云存储” 或 “实例组”,因为我们用的是 VM,所以选择 “实例组”。
- 新实例组:点击“新建实例组”。
- 名称:
my-vm-instance-group。 - 类型:选择“无状态”。
- 区域:选择你的 VM 所在的区域。
- 实例:从下拉列表中选择你刚才创建的 VM 实例。
- 健康检查:使用默认的健康检查(它会检查
HTTP:80)。
- 名称:
- 点击 “创建” 返回后端服务配置。
- 平衡模式:保持默认的
- CDN:这是最关键的一步!
- 勾选 “启用 Cloud CDN”。
- 缓存模式:保持默认的
Use origin headers,这意味着 CDN 会遵循源服务器通过 HTTP 头(如Cache-Control)返回的缓存指令。
- 其他设置:如需要,可以配置自定义头、超时等。
- 点击 “创建” 完成后端服务的创建。
步骤 3:创建 URL 映射
- 在 GCP Console 中,导航到 网络服务 > 负载均衡 > URL 映射。
- 点击 “创建 URL 映射”。
- 基本信息:
- 名称:
my-cdn-url-map。
- 名称:
- 主机和路径规则:
- 主机名:输入你的域名,
www.example.com,如果你还没有域名,可以先使用 来匹配所有主机名。 - 路径:输入 ,表示匹配所有路径。
- 后端服务:从下拉列表中选择你刚刚创建的后端服务
my-cdn-backend。
- 主机名:输入你的域名,
- 点击 “创建” 完成 URL 映射的创建。
步骤 4:创建全局外部 HTTPS 负载均衡器
- 在 GCP Console 中,导航到 网络服务 > 负载均衡。
- 点击 “创建负载均衡器”。
- 选择互联网负载均衡器类型:选择 “从互联网到我的 VMs”,然后点击 “继续”。
- 配置前端:
- 名称:
my-cdn-load-balancer。 - 协议:选择
HTTPS(强烈推荐)。 - IP 版本:选择
IPv4。 - IP 地址:选择 “创建 IP 地址”,创建一个全球静态外部 IP 地址,记下这个 IP 地址。
- 证书:点击 “管理”。
- 创建新的自签名证书(仅用于测试):输入域名,创建一个临时证书。
- 上传证书(推荐):如果你有证书文件(
.pem格式),可以在这里上传,或者选择 Google 管理的证书,它会自动为你签发和续 Let's Encrypt 的免费证书。
- 点击 “完成”。
- 名称:
- 配置后端:
- 点击 “后端配置”。
- 点击 “更改后端服务”。
- 从列表中选择你创建的 URL 映射
my-cdn-url-map。 - 点击 “保存”。
- 配置审核:检查所有配置是否正确,然后点击 “创建”。
部署负载均衡器需要几分钟时间,你可以在负载均衡器的详情页面查看“配置状态”。

步骤 5:配置域名和 SSL 证书
- 配置域名:到你购买域名的 DNS 管理商(如 GoDaddy, Namecheap 等)处,添加一个
A记录。- 名称:
www(或 代表根域名)。 - 值/类型:指向你在步骤 4 中创建的全局静态外部 IP 地址。
- 名称:
- 等待 DNS 生效:DNS 更新可能需要几分钟到几小时不等,你可以使用
nslookup www.example.com来验证 IP 地址是否已更新。
步骤 6:部署并测试
- 等待负载均衡器状态变为 “运行中”。
- 在浏览器中访问你的域名:
https://www.example.com。 - 第一次访问:页面会从你的源站 VM 加载,你可以通过查看 VM 的访问日志来确认这一点。
- 第二次访问:再次刷新页面,这次响应应该非常快,你可以在 Chrome DevTools 的 Network 面板中查看响应头,如果看到
X-Cloud-Trace-Context和X-CDN-Cache或X-Edge-Cache等头,并且值为HIT,说明 CDN 已经缓存了内容并成功命中。
高级配置与最佳实践
缓存键
缓存键是 CDN 用来判断两个请求是否“相同”的依据,默认情况下,缓存键包括:
- 请求的 HTTP 方法 (通常是
GET或HEAD) - 请求的完整 URI (包括查询参数
?a=1&b=2)
最佳实践:对于动态页面(如 ?user=123),你可能不希望每个用户 ID 都产生一个独立的缓存,这时可以修改缓存键,排除查询参数。
- 操作:在后端服务的 CDN 设置中,找到 “高级缓存设置” -> “缓存键” -> “查询参数”,选择 “忽略所有查询参数”,这样
page.html?id=1和page.html?id=2会命中同一个缓存。
缓存模式
- Use origin headers (默认):尊重源服务器通过
Cache-Control等头指令,这是最灵活的方式。 - Cache all content:忽略源服务器的缓存指令,强制缓存所有成功的
200 OK响应,适用于内容几乎不变的静态资源。 - Disable caching:不缓存任何内容,适用于实时性要求极高的数据。
缓存所有内容
如果你确信你的后端服务返回的内容是静态的,可以在后端服务的 CDN 设置中,将 “缓存模式” 设置为 “Cache all content”,这可以最大限度地减少回源,提升性能。
自定义错误页面
当源站返回 404 Not Found 或 500 Server Error 时,你可以配置 CDN 返回一个自定义的错误页面,而不是直接传递源站的错误信息。
- 操作:在后端服务的 CDN 设置中,找到 “自定义错误响应”,添加规则,例如将
404映射到一个 Cloud Storage 存储桶中的html文件。
安全性与认证
- Cloud Armor:在负载均衡器的“安全”部分,可以配置 Cloud Armor,提供 Web 应用防火墙 功能,防止 DDoS 攻击和常见的 Web 漏洞。
- Identity-Aware Proxy (IAP):如果需要对受保护的资源进行用户身份验证,可以将 IAP 与负载均衡器集成。
性能优化
- Brotli/Gzip 压缩:确保你的源服务器或负载均衡器启用了内容压缩,CDN 会自动处理压缩和解压,减少传输数据量。
- HTTP/2 和 HTTP/3:现代浏览器默认支持,能显著提升性能,确保你的 SSL 证书配置正确。
监控与日志
- Cloud Monitoring:在 GCP Console 的“监控”部分,你可以查看 CDN 的关键指标,如:
- 请求总数
- 缓存命中率:最重要的性能指标。
- 平均延迟
- 带宽使用量
- Cloud Logging:在“日志”部分,你可以查看详细的请求日志,这对于调试问题非常有用,可以查看请求是否命中缓存、回源详情等。
常见问题与故障排查
-
问题:缓存命中率很低。
- 排查:
- 检查源服务器返回的
Cache-Control头,是否设置了no-store或private。 - 检查 URL 是否有动态的查询参数没有被排除在缓存键之外。
- 确保请求的 HTTP 状态码是
200 OK或206 Partial Content。
- 检查源服务器返回的
- 排查:
-
问题:用户访问速度没有明显提升。
- 排查:
- 使用
ping或traceroute检查用户到 CDN IP 的网络路径是否正常。 - 使用
curl -I https://your-domain.com查看响应头,确认X-CDN-Cache: HIT存在。 - 检查源服务器本身是否就是性能瓶颈。
- 使用
- 排查:
-
问题:部署后网站无法访问。
- 排查:
- 检查负载均衡器的“配置状态”是否为“运行中”。
- 检查防火墙规则是否正确配置。
- 检查健康检查是否通过,在“健康检查”页面查看目标实例组的状态。
- 检查 DNS 记录是否正确配置。
- 排查:
Google Cloud CDN 是一个功能强大且易于集成的服务,能够显著提升全球用户的访问体验,并降低源服务器的负载,通过本教程,你应该已经掌握了从零开始配置 CDN 的基本流程。
CDN 的核心在于 缓存,理解如何通过 缓存键 和 缓存模式 来精确控制缓存行为,是发挥其最大潜力的关键,结合 监控 和 日志,你可以持续优化配置,确保你的应用始终以最佳性能运行。
