CDN加速OSS后未响应Content-MD5

本文涉及的产品
对象存储 OSS,20GB 3个月
日志服务 SLS,月写入数据量 50GB 1个月
对象存储 OSS,恶意文件检测 1000次 1年
简介: OSS对于range请求不响应Content-MD5,这份响应被CDN缓存下来。后续客户端请求到对应的CDN节点,不管是否是range请求,由于CDN已经有缓存,就会直接返回之前缓存的不带Content-MD5的Response信息。

问题描述

使用CDN加速OSS以后发现返回的响应头里没有带Content-MD5头了,而直接通过OSS域名访问是会返回Content-MD5头的。刷新CDN缓存以后部分节点会返回Content-MD5,但是还是会有部分节点不返回Content-MD5。

< HTTP/1.1 200 OK

< Server: Tengine

< Content-Type: video/mp4

< Content-Length: 17369965

< Connection: keep-alive

< Date: Mon, 07 Jun 2021 11:33:58 GMT

< x-oss-request-id: 60BE042629F7AC37327E477F

< Vary: Origin

< x-oss-cdn-auth: success

< Accept-Ranges: bytes

< ETag: "D1EF74CEC4DE1F89F03A30C4647869F4"

< Last-Modified: Wed, 26 May 2021 04:10:19 GMT

< x-oss-object-type: Normal

< x-oss-hash-crc64ecma: 1958374103060741818

< x-oss-storage-class: Standard

< x-oss-version-id: null

< x-oss-server-time: 4

< Ali-Swift-Global-Savetime: 1623065639

< Via: cache25.l2cn3037[0,0,200-0,H], cache47.l2cn3037[1,0], cache47.l2cn3037[1,0], vcache39.cn2038[20,20,200-0,M], vcache33.cn2038[22,0]

< Age: 0

< X-Cache: MISS TCP_MISS dirn:-2:-2

< X-Swift-SaveTime: Mon, 07 Jun 2021 12:16:47 GMT

< X-Swift-CacheTime: 2592000

< Access-Control-Allow-Origin: *

< Timing-Allow-Origin: *

< EagleId: 73eec0b516230682076361320e

<

{ [2920 bytes data]

100 16.5M  100 16.5M    0     0   766k      0  0:00:22  0:00:22 --:--:--  914k

* Connection #0 to host tutor-trans-video-online.fbcontent.cn left intact

排查过程

1. 排查CDN的日志

虽然X-Cache是MISS,没有命中缓存回源的,但是通过以下的Via信息可以看到是命中L2的缓存了,L2节点是l2cn3037

Via: cache25.l2cn3037[0,0,200-0,H], cache47.l2cn3037[1,0], cache47.l2cn3037[1,0], vcache39.cn2038[20,20,200-0,M], vcache33.cn2038[22,0]

通过Ali-Swift-Global-Savetime: 1623065639可以知道该文件缓存到CDN节点的时间,unix时间戳1623065639转换成北京时间是2021-06-07 19:33:59。于是查对应时间段l2cn3037这个节点的日志信息,发现该L2上记录的状态码都是206,同时带了http_range字段,说明L2是Range回源OSS的,因此OSS响应了206。

2. 查OSS日志

查对应时间段OSS的实时日志,发现OSS日志字段记录的content_md5为"-",说明OSS确实没有响应content_md5字段。测试发现直接range请求OSS,OSS也是不会响应Content-MD5的,经确认OSS的策略的确如此。

3. 查CDN的range回源配置

确认CDN的range回源配置,发现配置的是on,也就是开启了range回源

问题原因

整个过程是19:33:59有一个客户端发起了range请求,由于CDN域名配置了range回源,因此CDN会按照512KB的大小range回源OSS,OSS接到range请求以后响应状态码206并且不响应Content-MD5,这份响应被CDN缓存下来。后续客户端请求到对应的CDN节点,不管是否是range请求,由于CDN已经有缓存,就会直接返回之前缓存的不带Content-MD5的Response信息。

PS:为什么当时刷新缓存以后通过CDN去访问可以看到有Content-MD5?
答:因为当时刷新缓存以后,重新去访问的时候,客户端发起的不是range请求,而是普通的请求;与此同时,由于CDN上配置的range回源是"on",并不是"force",也就是不是强制range回源,因此CDN这种情况下回源的时候并没有发起range请求,OSS是会响应Content-MD5的。

解决方案

OSS会返回CRC,如果要做文件一致性校验的话可以通过x-oss-hash-crc64ecma字段获取CRC来做校验。

适用于

  • CDN
  • DCDN
  • 对象存储OSS
目录
相关文章
|
2月前
|
存储 安全 API
利用对象存储(OSS)实现内容分发加速 :高效可靠的解决跨境下载延迟问题
利用对象存储(OSS)实现内容分发加速 :高效可靠的解决跨境下载延迟问题
176 2
|
9月前
|
存储 API 对象存储
使用对象存储OSS实现内容分发加速
通过本教程的操作,您可以在OSS中创建bucket并上传数据,可以开通OSS传输加速对OSS数据进行加速访问,从而为游戏服务器分担下载请求,并为用户带来加速体验。
10953 22
使用对象存储OSS实现内容分发加速
|
11天前
|
存储 负载均衡 应用服务中间件
Web架构&OSS存储&负载均衡&CDN加速&反向代理&WAF防护
Web架构&OSS存储&负载均衡&CDN加速&反向代理&WAF防护
|
2月前
|
缓存 API 对象存储
一看就懂:我是如何使用OSS提供的CDN服务的?
一看就懂:我是如何使用OSS提供的CDN服务的?
246 1
|
7月前
|
对象存储 开发者
【获奖名单公示】1024·云上见 使用对象存储OSS实现内容分发加速
仅展示获取实物奖品用户,公示截止至12月14日。
457 1
|
12月前
|
存储 SQL JSON
使用SLS统计分析三方CDN回源OSS月95带宽实践
本文介绍通过使用阿里云日志服务SLS,对存储在SLS中的三方CDN回源阿里云OSS的监控日志数据,进行自定义查询分析之后得到按照不同运营商、不同业务类型(CND)纬度下,回源OSS的带宽月95量级数据,用于业务统计分析。
388 0
|
2月前
|
域名解析 网络协议 安全
阿里云CDN
本文介绍阿里云CDN产品中涉及的基本概念,便于您更准确地理解和使用CDN产品。
90 5
|
2月前
|
域名解析 网络协议 CDN
网站接入阿里云CDN实现域名加速全流程
阿小云网站已通过ICP备案在广州节点上线,但为提升全国用户访问速度,计划接入CDN。以下是4步CDN接入教程:1) 开通阿里云CDN服务;2) 添加加速域名;3) 使用DNS解析验证域名归属权;4) 配置CNAME实现域名与CDN节点关联。详细指南见阿里云CDN官方文档。
|
2月前
|
弹性计算 缓存 安全
【阿里云弹性计算】阿里云ECS与CDN结合:构建高性能全球内容分发网络
【5月更文挑战第26天】阿里云ECS与CDN结合打造高性能全球内容分发网络,通过ECS的弹性伸缩和安全可靠性,配合CDN的全球覆盖、高可用性及安全防护,提升访问速度,减轻服务器压力,优化数据传输。以WordPress为例,通过配置CDN域名和ECS,实现高效内容分发,提高系统扩展性和稳定性。此解决方案满足用户对访问速度和稳定性的高要求,为企业提供优质的云计算体验。
128 0
|
2月前
|
缓存 网络协议 Serverless
阿里云CDN简介和使用流程
本文档介绍了如何在阿里云上配置和使用CDN服务。首先,需要注册并实名认证阿里云账号,然后购买CDN服务。接着,添加要加速的域名,通过CDN控制台和阿里云云解析DNS进行配置,并验证CNAME设置是否生效。之后,配置源站信息,可以选择OSS域名、IP、源站域名或函数计算域名作为源站。最后,设置缓存规则,如缓存过期时间、状态码过期时间、自定义HTTP响应头等,以优化资源访问效率。
阿里云CDN简介和使用流程

热门文章

最新文章