腾讯云CDN 出现错误码423

在本博客搭建和初步运营中,经常在文章编辑器(Gutenburg)使用中报错423错误并影响正常使用,为此我展开了系统性研究和进行了工单咨询

腾讯云工单咨询

发现问题源于腾讯云CDN的一个配置选项:回源301/302跟随

根据腾讯云故障排查文档可得知:

状态码 423 是腾讯云 CDN 自定义状态码,CDN 检测到有回环请求时会报错 423。建议您检查以下几点:

  1. 检查 CDN 控制台 配置的源站,若您的源站也是腾讯云 CDN 加速域名,则可能会造成回环请求。
  2. 若您的源站配置了 HTTP 请求到 HTTP 301/302跳转,且 CDN 控制台开启了回源跟随301/302配置,可能会造成访问423,建议您关闭回源跟随301/302配置。注意:若您使用此方法,建议您开启 HTTPS 配置,强制跳转 HTTPS,且回源方式修改为协议跟随,否则会造成多次重定向,配置流程请参考 HTTPS 配置

问题排查

腾讯云 CDN 默认不缓存301/302状态码,当源站返回301/302请求后,CDN 节点默认会将响应返回给用户端,由用户端重定向到对应的资源进行访问。

通过开启回源跟随301/302配置,CDN 节点在回源时遭遇301/302时会主动跟随跳转,直至获取所需资源(最多可跟随3次),返回实际的资源给到用户端,用户端无需跳转。

示例

若域名www.example.com开启了回源跟随301/302配置:

用户 A 请求资源:http://www.example.com/1.jpg,在节点未命中缓存,则节点会请求源站获取所需资源,若源站返回的 HTTP Response 状态码为302,跳转指向地址为 http://www.example.com/2.jpg,则:

  1. 开启回源跟随301/302配置后,节点收到状态码为301/302的 HTTP Response 后,会直接向跳转指向的地址发起请求。
  2. 获取到所需资源后,缓存至节点,并返回给用户。
  3. 此时用户 B 也向http://www.example.com/1.jpg发起请求,则会在节点直接命中并返回给用户。
  4. 开启回源跟随301/302配置后,最多仅跟随3次跳转,超出限制则会直接返回301/302给客户。

若域名www.example.com未开启回源跟随301/302配置:

用户 A 请求资源:http://www.example.com/1.jpg,在节点未命中缓存,则节点会请求源站获取所需资源,若源站返回的 HTTP Response 状态码为301/302,跳转指向地址为http://cdn.example.com/1.jpg,则:

  1. 节点将该 HTTP Response 直接返回给用户。
  2. 用户向http://cdn.example.com/1.jpg发起请求,若该域名未接入 CDN,则不会有加速效果。
  3. 若此时用户 B 也向http://www.example.com/1.jpg 发起请求,则会重复上述流程。

了解问题所在

Wordpress的一些接口在请求后会返回一个302请求,再次访问返回的新地址才能完成功能,因此其本不该缓存。而回源跟随会缓存其302信息,不论请求信息内容为何都会跳转到同一链接,因此其前后链接对应不同,由此返回错误。错误导致回环,因此腾讯云报错423

例1

请求http://www.example.com/api.php?uploadid=1会将你访问的uploadid计入数据库并返回302请求至http://www.example.com/upload.php?id=1,当你访问此链接时才会正常进行上传

而回源跟随会直接对你返回http://www.example.com/upload.php?id=1,前后参数/Cookie不同,服务端报错,因此产生回环

例2

请求http://www.example.com/api.php?uploadid=1会将你访问的uploadid计入数据库并返回302请求至http://www.example.com/upload.php?id=1,当你访问此链接时才会正常进行上传

当你再次访问http://www.example.com/api.php?uploadid=2,服务端本会返回http://www.example.com/upload.php?id=2,但CDN缓存了上次的302结果并对你返回了http://www.example.com/upload.php?id=1,此时前后访问id不同导致出错

根据腾讯云故障优先级

CDN 默认策略:当用户源站出现异常时,用户侧访问到达的 CDN 节点若缓存仍未到期,则根据节点缓存直接响应内容给客户。若到达的 CDN 节点缓存已被淘汰,则会发起回源请求,无法进行响应。

CDN会返回一个错误请求,而此请求无法将文件上传至服务器,因此会引发接下来的连续错误

根进

根据官方页面描述推测,如果开启这两项设置会降低回源次数,使得用户访问时都从距离自己最近的CDN节点抓取数据,就相当于提高了CDN命中率,进而提高用户体验度,访问速度更快

但某些接口为“一次性接口”,进而导致产生连续报错

最终结果

Wordpress网站不要开此选项,此选项并无太大优化作用。如有问题可提交腾讯云工单处理

参考信息

腾讯云CDN 出现错误码423 is licensed under CC BY-NC-SA 4.0

评论

  1. 博主
    Windows Chrome
    12月前
    2021-7-02 21:41:26

    腾讯工单真的快

发送评论 编辑评论


|´・ω・)ノ
ヾ(≧∇≦*)ゝ
(☆ω☆)
(╯‵□′)╯︵┴─┴
 ̄﹃ ̄
(/ω\)
∠( ᐛ 」∠)_
(๑•̀ㅁ•́ฅ)
→_→
୧(๑•̀⌄•́๑)૭
٩(ˊᗜˋ*)و
(ノ°ο°)ノ
(´இ皿இ`)
⌇●﹏●⌇
(ฅ´ω`ฅ)
(╯°A°)╯︵○○○
φ( ̄∇ ̄o)
ヾ(´・ ・`。)ノ"
( ง ᵒ̌皿ᵒ̌)ง⁼³₌₃
(ó﹏ò。)
Σ(っ °Д °;)っ
( ,,´・ω・)ノ"(´っω・`。)
╮(╯▽╰)╭
o(*////▽////*)q
>﹏<
( ๑´•ω•) "(ㆆᴗㆆ)
😂
😀
😅
😊
🙂
🙃
😌
😍
😘
😜
😝
😏
😒
🙄
😳
😡
😔
😫
😱
😭
💩
👻
🙌
🖕
👍
👫
👬
👭
🌚
🌝
🙈
💊
😶
🙏
🍦
🍉
😣
Source: github.com/k4yt3x/flowerhd
颜文字
Emoji
小恐龙
花!
上一篇
下一篇