You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

CloudFront行为未将流量转发至ELB的问题排查请求

CloudFront路径规则不匹配导致/cms/*请求路由到S3的问题排查与解决

核心问题分析

配置/cms/*行为指向ELB,但/cms/assets/img.jpg这类请求仍路由到S3返回404,且将ELB设为默认行为时正常,说明路径匹配的优先级或规则存在问题,而非HTTPS或源配置问题。

排查与修复步骤

1. 检查行为的优先级顺序

CloudFront按行为列表的从上到下顺序匹配路径,更具体的路径规则必须排在通用规则之前:

  • 登录CloudFront控制台,进入目标分发的「行为」标签页
  • 确认/cms/*行为的位置在默认*行为的上方
  • 如果顺序颠倒,拖动/cms/*行为到*行为之前,保存并等待分发部署完成(通常15-30分钟)

2. 验证路径模式的正确性

确保/cms/*的路径模式符合CloudFront的匹配规则:

  • 路径必须以/开头,不能写成cms/*(缺少开头的斜杠会导致无法匹配/cms/xxx格式的请求)
  • /*后缀表示匹配该路径下的所有子路径,符合/cms/assets/img.jpg这类请求的匹配需求

3. 排查路径改写或缓存策略干扰

检查/cms/*行为的「路径改写」配置:

  • 如果设置了路径改写规则(比如将/cms/*改写为/*),需确保改写逻辑不会影响路径的初始匹配(CloudFront是先匹配原始请求路径,再执行改写)
  • 确认缓存键配置未包含会干扰路径匹配的自定义参数(此情况概率较低,但可排除)

4. 确认分发已完成部署

修改行为配置后,CloudFront需要全局同步部署:

  • 在分发列表中查看状态,当状态显示为「已部署」后再进行测试,避免因未生效的旧配置导致问题

5. 排除Lambda@Edge干扰(可选)

虽然你提到自定义Lambda不涉及当前问题,但需确认是否存在其他Lambda@Edge函数(比如请求触发型)修改了请求路径,导致原始路径无法匹配/cms/*规则。

验证方法

完成上述调整后,再次访问https://host.com/cms/assets/img.jpg,若请求正确路由到ELB,则问题解决。

内容的提问来源于stack exchange,提问作者Adrian Varysoo

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.08 11:01:35