本文介绍如何将存储在火山引擎对象存储(TOS)中的静态资源,通过火山引擎内容分发网络(CDN)进行加速分发。
场景描述 如果您的业务需要分发大量的静态文件(例如图片、视频、安装包等),您可以使用 TOS 作为存储源,并配合 CDN 来提升用户的访问体验。
TOS :提供海量、可靠、低成本的云存储服务,适合存放各类静态资源。CDN :在全球范围内部署了大量边缘节点。CDN 可以将源站内容缓存到靠近用户的节点上,让用户可以就近获取所需内容,从而避免网络拥堵,提升访问速度。方案优势 :
提升速度 :解决公网拥塞和延迟,优化用户访问体验。节省成本 :CDN 回源到 TOS 的流量在 TOS 侧以 “CDN 回源流量” 计费,相比 TOS 直接流出的公网流量单价更低。灵活控制 :CDN 支持回源鉴权、防盗链、IP 黑白名单等高级安全功能。本文将引导您完成以下操作:
准备 TOS 存储桶。 根据您的 TOS 存储桶所属账号(同账号或跨账号),配置 CDN 加速域名与源站。 配置 CNAME,将用户的访问请求导向 CDN。 验证结果。
准备工作 在开始之前,请确保您已完成以下准备:
已开通火山引擎 内容分发网络服务 。 准备 TOS 存储桶,请根据您的账号情况确认:
拥有一个已备案的域名。
场景一:加速同账号下的 TOS 资源 如果您的 CDN 服务和即将创建的 TOS 存储桶位于同一个火山引擎账号 下,请按照以下步骤操作。
步骤一:创建 TOS 私有桶并上传文件 出于安全考虑,建议您创建私有桶来存储您的静态资源。
登录 对象存储控制台 。 在左侧导航栏,点击 桶列表 。 在 桶列表 页面,点击 创建桶 。 在 创建存储桶 页面,完成以下配置,然后点击 确定 。
名称 :输入一个唯一的名称。区域 :选择一个靠近您用户或业务的地域。桶策略 :选择 私有 。 存储桶创建后,进入该存储桶,点击 上传文件 ,上传用于测试的静态文件。
步骤二:添加 CDN 加速域名并配置源站 登录 内容分发网络控制台 。 在左侧导航栏,点击 域名管理 。 在 域名管理 页面,点击 新增 。 在 新增域名 页面,输入您准备用于加速 TOS 资源分发的域名。 点击 新增源站 ,并进行如下配置:
源站类型 :选择 对象存储源站 。存储桶来源 :选择 火山引擎 。鉴权方式 :选择 跨服务授权 。服务授权 :首次配置需点击 前往授权 ,以授权 CDN 对 TOS 的访问。如果您之前已经完成授权,页面会显示 已授权 。存储桶 :在存储桶列表中选择您在步骤一中创建的 TOS 存储桶。私有桶访问 :开启该开关。 配置完成后,点击 提交 。
步骤三:配置 CNAME 解析 域名添加后,CDN 会为该域名分配一个 CNAME 地址。您需要将加速域名指向此 CNAME 地址,这样访问该域名的请求才能引导至 CDN 节点。
返回 域名管理 页面,找到刚刚添加的域名。 在 CNAME 列,复制该域名的 CNAME 地址。 前往您的域名解析服务商处,为加速域名添加一条 CNAME 记录。以下配置以 火山引擎云解析 DNS 为例。
域名 :填写加速域名的前缀。例如,如果您的加速域名是 cdn.example.com,则填写 cdn。记录类型 :选择 CNAME。记录值 :点击 添加记录值 ,然后粘贴您复制的 CNAME 地址。 点击 提交 。 CNAME 记录生效通常需要几分钟到几十分钟不等。
步骤四:结果验证 等待 CNAME 记录生效后,您可以通过以下方式验证加速效果:
在浏览器中,访问您上传到 TOS 的文件。URL 格式为 http://<您的加速域名>/<文件名>。
例如,如果您上传的文件是 image.jpg,加速域名是 cdn.example.com,则访问 http://cdn.example.com/image.jpg。 如果能够正常访问到文件,表示配置已成功。 您还可以使用 ping 或 dig 命令来检查域名的 CNAME 解析是否已生效。如果解析指向了以 .volces.com 结尾的域名,则表示 CNAME 已配置成功。
场景二:加速跨账号的 TOS 资源 如果您的 CDN 服务和 TOS 存储桶分属不同的火山引擎账号 ,您可以将 TOS 存储桶视为 “S3 兼容的第三方源站” 进行配置。如果您的存储桶是公共桶 ,您也可以将该 TOS 存储桶配置为“域名源站”。
说明
在此场景的源站配置中,CDN 回源到 TOS 的流量在 TOS 侧依然以 “CDN 回源流量” 计费,享受价格优惠。需要注意的是,如果您将 TOS 存储桶配置为“源站域名”(仅限公共桶),必须使用存储桶的外网默认域名(而非自定义域名),才能享受该计费优惠。如果您发现账单中 TOS 计费项中没有“CDN 回源流量”,请 提交工单 联系技术支持。
步骤一:获取 TOS 存储桶信息(在目标账号获取) 在配置 CDN 之前,请在 TOS 存储桶所属的账号中获取以下信息:
S3 访问点外网域名 :进入 TOS 控制台,在存储桶 概览 页面查看。由于是跨账号加速,您必须获取该 Bucket 的外网域名 。S3 访问点域名示例:mybucket.tos-s3-ap-southeast-1.volces.com。访问密钥(AK/SK) :如果存储桶是私有的,需要获取账号的 AccessKey ID 和 AccessKey Secret。
步骤二:添加 CDN 加速域名并配置源站 登录 内容分发网络控制台 。 在左侧导航栏,点击 域名管理 。 在 域名管理 页面,点击 新增 。 在 新增域名 页面,输入您准备用于加速 TOS 资源分发的域名。 点击 新增源站 ,并进行如下配置:
源站类型 :选择 对象存储源站 。对象存储来源 :选择 第三方对象存储 。回源鉴权方式 :选择 Amazon S3 。存储桶地址 :选择 自定义域名 ,然后输入以 S3 访问点域名结尾的存储桶域名。例如 mybucket.tos-s3-ap-southeast-1.volces.com。回源 Host :如果您为存储桶配置了自定义域名,请在此输入自定义域名。否则,请 留空 ,CDN 将默认使用存储桶地址作为 Host。私有桶访问 :如果存储桶是私有的,开启该开关,然后输入账号的 AccessKey ID 和 AccessKey Secret。 配置完成后,点击 提交 。
步骤三:配置 CNAME 解析 与场景一中的步骤相同。
步骤四:结果验证 与场景一中的步骤相同。
常见配置与问题
1. 数据处理(x-tos-process)缓存配置 TOS 支持通过 URL 参数(如 x-tos-process=image/resize,w_300)进行图片处理。同时,CDN 在缓存图片时默认不在缓存 Key 中包含查询参数。这会导致图片被错误缓存。建议您在 CDN 缓存配置 中开启 缓存键值(Cache Key) 设置,并配置保留 x-tos-process 参数。
2. CDN+TOS 场景下的安全防护(白名单)配置指南 为了保护您的资源不被盗刷,您可以在 CDN 和 TOS 侧配置相关的安全防护策略。由于源站性质不同,安全配置逻辑如下:
TOS 为公共桶 :由于桶是公开的,用户可以直接绕过 CDN 访问 TOS。此时必须在 TOS 侧和 CDN 侧同时配置防盗链(Referer)和 IP 黑白名单。TOS 为私有桶(推荐) :桶是私有的,外部用户只能通过 CDN 访问。这种情况下,您只需在 CDN 侧配置安全防护策略 (如防盗链、IP 黑白名单、URL 鉴权等),CDN 在回源时会通过鉴权(跨服务授权或 AK/SK)访问 TOS,从而集中管理您的安全策略,降低配置复杂度。