CDN加速后提示重定向的次数过多的解决方案

更新时间:
复制 MD 格式

问题描述

通过CDN加速后,访问加速域名提示:该网页无法正常运作,重定向的次数过多。(报错:ERR_TOO_MANY_REDIRECTS)

重定向次数过多

常见原因

image
  1. 用户通过HTTPS协议(443端口)访问加速域名(如 https://example.aliyun.com/)。

  2. CDNHTTP协议(80 端口)回源(如http://example.aliyun.com/)。

  3. 源站服务器(如Nginx)配置了HTTPHTTPS的重定向规则,通过HTTP协议回源时,服务器会返回301/302状态码,并且将请求重定向到HTTPS协议的URL(例如 https://example.aliyun.com/)。随后,客户端(如浏览器)会遵循跳转规则,通过HTTPS协议(默认端口443)重新发起请求,最终访问加速域名。

  4. 上述过程形成循环,超过浏览器单次请求允许的重定向次数后,浏览器终止请求并报错。

解决方案

如果您遇到的问题符合上述逻辑,您可以完成以下四步来解决您的问题。

步骤一:将源站回源端口设置为443

  1. 登录CDN控制台

  2. 在左侧导航栏,单击域名管理

  3. 域名管理页面,找到目标域名,单击操作列的管理

  4. 源站信息区域,选择编辑源站配置。

  5. 将源站的端口信息改为443,然后点击确定

步骤二:修改回源协议为 HTTPS

如果没有开启回源协议功能,则可以忽略此步骤。

  1. 登录CDN控制台

  2. 在左侧导航栏,单击域名管理

  3. 域名管理页面,找到目标域名,单击操作列的管理

  4. 在指定域名的左侧导航栏,单击回源配置

  5. 配置页签中,找到回源协议区域,点击修改配置

  6. 协议类型选择 HTTPS,然后点击确定

    选择 HTTPS 可确保 CDN 始终以 HTTPS 协议回源,无论客户端使用 HTTP 还是 HTTPS 访问,均可避免触发源站的 HTTPHTTPS 强制跳转而造成重定向循环。

    说明

    若选择跟随,当客户端以 HTTP 访问时,CDN 仍以 HTTP 回源,源站的强制跳转规则仍会触发重定向循环。

步骤三:对资源的缓存进行刷新

  1. 登录CDN控制台

  2. 在左侧导航栏,单击刷新预热

  3. 操作类型选择刷新,操作方式选择目录

  4. URL中填写您的根路径(例如,若加速域名为https://www.example.com/image/static/1.png,那么您需要在此处填写的URLhttps://www.example.com/。注意,目录刷新的URL必须以https://http://开头,以/结尾)。

  5. 点击提交,开始缓存刷新的任务。

  6. 操作记录中可以看到缓存刷新任务的进度。

步骤四:清除本地浏览器缓存

此处以Chrome浏览器为例作为演示。

  1. Chrome浏览器右上角,依次点击“更多”图标 展开然后 删除浏览数据

  2. 选择时间范围,例如过去一小时时间不限

  3. 选择要移除的信息的类型(缓存的图片和文件为必选项,其他选项为可选项)。

  4. 点击删除数据

验证步骤

您可以通过以下方式验证:

  1. 使用curl -I 加速域名(例如:curl -I https://www.example.com/image/static/1.png)检查响应头是否包含Location跳转信息。如果响应头不包含Location,说明问题已解决。

  2. 或者,使用浏览器无痕模式直接访问加速域名进行验证,如果能够正常访问,说明问题已解决。