问题描述
通过CDN加速后,访问加速域名提示:该网页无法正常运作,xxx将您重定向的次数过多。(报错:ERR_TOO_MANY_REDIRECTS)
常见原因
用户通过HTTPS协议(443端口)访问加速域名(如
https://example.aliyun.com/
)。CDN以HTTP协议(80 端口)回源(如
http://example.aliyun.com/
)。源站服务器(如Nginx)配置了HTTP到HTTPS的重定向规则,通过HTTP协议回源时,服务器会返回301/302状态码,并且将请求重定向到HTTPS协议的URL(例如
https://example.aliyun.com/
)。随后,客户端(如浏览器)会遵循跳转规则,通过HTTPS协议(默认端口443)重新发起请求,最终访问加速域名。上述过程形成循环,超过浏览器单次请求允许的重定向次数后,浏览器终止请求并报错。
解决方案
如果您遇到的问题符合上述逻辑,您可以完成以下四步来解决您的问题。
步骤一:将源站回源端口设置为443
登录CDN控制台。
在左侧导航栏,单击域名管理。
在域名管理页面,找到目标域名,单击操作列的管理。
在源站信息区域,选择编辑源站配置。
将源站的端口信息改为
443
,然后点击确定。
步骤二:修改回源协议类型为跟随
如果没有开启回源协议功能,则可以忽略此步骤。
登录CDN控制台。
在左侧导航栏,单击域名管理。
在域名管理页面,找到目标域名,单击操作列的管理。
在指定域名的左侧导航栏,单击回源配置。
在配置页签中,找到回源协议区域,点击修改配置。
协议类型选择跟随,然后点击确定。
步骤三:对资源的缓存进行刷新
登录CDN控制台。
在左侧导航栏,单击刷新预热。
操作类型选择刷新,操作方式选择目录。
在URL中填写您的根目录地址(例如,若加速域名为
https://www.example.com/image/static/1.png
,那么您需要在此处填写的URL为https://www.example.com/
。此处需要注意,目录刷新的URL必须以https://
或http://
开头,以/
结尾)。点击提交,开始缓存刷新的任务。
在操作记录中可以看到缓存刷新任务的进度。
步骤四:清除本地浏览器缓存
此处以Chrome浏览器为例作为演示。
在Chrome浏览器右上角,依次点击“更多”图标
删除浏览数据。
选择时间范围,例如过去一小时或时间不限。
选择要移除的信息的类型(缓存的图片和文件为必选项,其他选项为可选项)。
点击删除数据。
验证步骤
您可以通过以下方式验证:
使用
curl -I 加速域名
(例如:curl -I https://www.example.com/image/static/1.png
)检查响应头是否包含Location
跳转信息。如果响应头不包含Location
,说明问题已解决。或者,使用浏览器无痕模式直接访问加速域名进行验证,如果能够正常访问,说明问题已解决。