CDN通过将OSS资源缓存至就近的CDN节点实现加速访问OSS。相比直接访问OSS资源,CDN具有更高的带宽上限,可有效避免OSS下行带宽和Bucket地域的限制。通过CDN节点进行分发,能够有效减少访问延迟。
使用场景
使用CDN加速访问OSS可以提升用户访问速度,改善用户体验。以下是使用CDN加速访问OSS的常见场景:
在线播放音视频文件
如果您通过OSS提供音视频在线播放等服务,CDN可以将音视频内容分发到全球各地的边缘服务器,降低音视频播放的缓冲时间,提供更好的观看体验。
高并发访问
当您的网站或应用程序遇到高并发访问量时,CDN可以分发用户请求到多个边缘服务器上,实现负载均衡,减轻源服务器的压力,并且保持较快的响应速度。
大文件传输
如果您需要通过OSS访问或下载较大的文件,结合CDN可以提供更高的带宽和传输速度,减少文件下载时间。
全球用户
如果您的网站或应用程序的用户分布在全球各地,使用CDN可以将内容缓存在离用户更近的服务器节点上,降低数据传输的延迟,提高访问速度。
背景信息
为了更好地应对访问量的增长,并避免性能瓶颈,建议您将静态数据存储到OSS中,并通过CDN加速OSS的访问。这将使传统的动态资源和静态资源不分离的网站架构变为动态资源和静态资源分离的云上网站架构。通过这种架构改造,可以大大提高网站的稳定性和可靠性,同时为网站的访问速度带来显著的提升。
传统网站架构
云上网站架构
费用说明
将OSS作为CDN源站时,可能会产生CDN下行流量费用以及OSS流出到CDN流量费用。更多信息,请参见CDN加速OSS计费说明。
前提条件
已创建一个OSS Bucket,且上传了相关资源。具体操作,请参见上传文件。
已开通阿里云CDN服务。具体操作,请参见开通CDN服务。
已注册二级域名。支持绑定非阿里云注册的域名。如果您还未注册域名,您可以在阿里云域名服务平台注册域名。具体步骤,请参见注册域名。
如果要绑定的Bucket在中国内地,确保域名已备案,且账号已实名认证。如何备案和实名认证,请参见ICP备案流程、国际站账号实名登记常见问题。
操作步骤
此处以加速域名oss.example.com
为例介绍具体操作。您可以根据自己的实际情况来选择加速域名,包括主域名、二级域名、泛域名等。
步骤一:添加域名并解析域名
快速部署
您可以使用资源编排ROS一键添加需要加速的域名,并将域名解析至CDN加速域名,从而快速添加和解析域名。
打开一键配置模板链接。
在资源编排 ROS控制台的创建资源栈页面的配置参数步骤:
选择需要加速访问的区域,例如中国内地
domestic
。填写加速域名为需要加速的域名,例如
oss.example.com
。填写源站信息为OSS Bucket对应的外网域名,例如
examplebucket.oss-cn-hangzhou.aliyuncs.com
,然后单击创建。
资源栈的资源栈信息页签状态显示创建中。
资源栈的状态显示创建成功后,单击输出页签,查看一键部署的Cname值。
手动部署
添加域名。
登录CDN管理控制台,选择域名管理。
单击添加域名,设置以下参数:
加速区域:选择仅中国内地。
加速域名:输入加速域名,该示例为oss.example.com。
业务类型:选择图片小文件。
源站信息:单击新增源站信息,然后选择OSS域名和需要加速的OSS域名(即之前创建的OSS Bucket对应的域名),其他参数保持默认值。单击确定。
仔细阅读并确认同意后,选中我理解并同意以上合规承诺数据跨境合规承诺,单击下一步,然后单击返回域名管理。
等到域名状态为正常运行时,复制CNAME值,该示例为oss.example.com.w.kunlunaq.com。
解析域名。
登录DNS管理控制台,选择域名解析。
单击已添加域名
oss.example.com
右侧的解析设置。在解析设置页面,单击添加记录。
在添加记录面板,配置以下参数:
记录类型:选择CNAME。
主机记录:输入oss。
记录值:输入之前复制的CNAME值oss.example.com.w.kunlunaq.com。
其他参数:保留默认值。
单击确认。等待几分钟后,使用ping命令查看加速域名是否生效。下图表示已生效。
步骤二:开启CDN缓存自动刷新并设置缓存过期时间
开启CDN缓存自动刷新。
进入OSS控制台,单击左侧导航栏的Bucket列表,然后选择对应的Bucket。
在左侧导航栏,选择
,单击目标域名右侧的未绑定,根据提示完成绑定。单击开启加速域名对应的CDN缓存自动刷新下的支持的操作。
下拉选择需要开启CDN缓存自动刷新操作对应的API接口名称,然后单击确定。
按目录或文件后缀名配置静态资源的缓存过期时间。
缓存过期时间指源站资源在CDN节点缓存的时长达到预设时间时,资源将会被CDN节点标记为失效资源。如果客户端向CDN节点请求的资源已经失效,CDN会回源站获取最新资源并缓存到CDN节点。具体操作,请参见配置缓存过期时间。
步骤三:通过加速域名访问OSS文件
查看文件URL。
通过浏览器访问文件URL。
访问公共读文件
单击复制文件URL。
访问文件URL。
说明通过开发者工具检查发现,表示CDN缓存策略实际效果的X-Cache字段返回值以MISS开头,表明首次访问未命中CDN节点缓存,需要向源站请求资源。后续访问命中CDN节点缓存后,X-Cache字段返回值将以HIT开头,表明源站的资源已缓存到CDN节点。
访问私有文件
开启OSS私有Bucket回源。具体操作,请参见开启私有Bucket回源。
重要开启私有Bucket回源功能后,CDN节点将会在回源请求中添加一个名称为Authorization的Header,其值为OSS私有Bucket鉴权签名信息。
单击复制文件URL。
删除文件URL中包含的签名信息。
即原文件URL为
https://oss.example.com/outside.jpg?Expires=1700628094&OSSAccessKeyId=TMP.3********&Signature=B********
,删除签名信息后文件URL为https://oss.example.com/outside.jpg
。重要回源OSS的单个请求不能同时在Header以及URL请求参数中均携带签名。因此,当回源请求中携带了Authorization请求头后,文件URL中不能携带用于签名认证的参数,例如
Expires
、Signature
、OSSAccessKeyId
等,否则将会导致OSS鉴权失败。更多信息,请参见0002-00000039。访问已删除签名信息的文件URL。
说明通过开发者工具检查发现,表示CDN缓存策略实际效果的X-Cache字段返回值以MISS开头,表明首次访问未命中CDN节点缓存,需要向源站请求资源。后续访问命中CDN节点缓存后,X-Cache字段返回值将以HIT开头,表明源站的资源已缓存到CDN节点。
(可选)为避免OSS资源被盗刷,您需要通过CDN配置Referer防盗链或者URL鉴权。
Referer防盗链
Referer防盗链是基于HTTP请求头中Referer字段(例如Referer黑白名单)来设置访问控制规则,实现对访客的身份识别和过滤,防止网站资源被非法盗用。更多信息,请参见配置Referer防盗链。
URL鉴权
通过CDN分发的内容默认为公开资源,用户获取URL后均可访问。为防止站点资源被恶意下载盗用,您还可以采用URL鉴权,自行配置校验鉴权URL中的加密串和时间戳,更安全有效地保护源站资源。更多信息,请参见配置URL鉴权。
相关文档
开启回源私有Bucket后,触发静态网站首页的请求报错。具体原因和解决方法请参见为什么CDN回源私有Bucket时,不支持访问Bucket的默认首页?
当您的业务接入阿里云CDN后,需要跨域共享或者访问资源时,您可以通过节点HTTP响应头来实现跨域访问。如果使用OSS作为源站,且OSS与CDN同时配置CORS,则CDN的CORS配置将覆盖OSS的CORS配置。更多信息,请参见配置跨域资源共享。
如果CDN节点上未缓存用户请求的资源或资源已过期,希望在CDN回源时从源站OSS分段获取用户需要的部分资源并缓存到CDN节点上,有效提高内容分发效率,您可以配置Range回源。更多信息,请参见配置Range回源。