CloudFront与ALB连接异常问题排查及无头部安全验证配置咨询
CloudFront与ALB连接异常问题排查及无头部安全验证配置咨询
Hey John, 我来帮你捋捋这个CloudFront通过ALB连EC2时出现404的问题,咱们一步步排查解决:
检查CloudFront行为的路径优先级与匹配规则
你提到给新端口的ALB Origin配置了特定路径的行为,这里要注意CloudFront的行为是按优先级(数字越小越先匹配)来执行的。如果新配置的行为路径范围太宽(比如/*),优先级又比原来正常的行为高,就会把原本指向旧ALB监听的请求给“抢”走,导致请求到了新端口的ALB上,但那边可能没有对应服务,自然返回404。
建议你调整行为优先级:把原来正常访问的路径行为设为更高优先级(比如优先级0),新路径的行为设为更低优先级(比如优先级1),确保路径匹配不会冲突。验证ALB新端口的监听与目标组配置
虽然你直接访问ALB DNS正常,但要确认CloudFront配置的Origin参数和ALB监听完全一致:- 端口号是否正确?比如CloudFront设的是8080,ALB监听的却是8090,这肯定连不上;
- 协议是否匹配?如果ALB监听的是HTTPS,CloudFront Origin也要设为HTTPS,反之亦然;
- 目标组状态是否正常?新端口对应的目标组里的EC2实例是不是健康,安全组有没有放行该端口的流量(要允许CloudFront的IP段访问,你可以用AWS提供的CloudFront前缀列表来配置ALB安全组,比手动加IP更方便)。
确认CloudFront配置已部署生效并清除缓存
CloudFront修改配置后,需要10-20分钟才能全部分发节点部署完成,要是刚改完就测试,可能部分节点还是旧配置,导致异常。你可以在CloudFront控制台查看分发的部署状态,显示“Deployed”后再测试。
另外,之前的请求可能被缓存了,试试用浏览器隐私模式访问,或者在URL末尾加?cache=random123这类参数绕过缓存,看看是不是缓存导致的旧结果。无头部安全验证的配置要点
如果你不想依赖头部做安全验证,要注意这几点:- 不要在CloudFront行为里配置强制校验的自定义头部(比如不要加
X-Origin-Verify这类需要ALB验证的头部); - ALB那边也不要设置基于请求头部的路由规则或访问限制;
- 确保CloudFront和ALB之间的SSL证书是可信的:如果ALB用的是AWS ACM颁发的证书,CloudFront默认会信任,不需要额外配置;如果是自定义证书,要确保CloudFront的信任链包含该证书。
- 不要在CloudFront行为里配置强制校验的自定义头部(比如不要加
备注:内容来源于stack exchange,提问作者john_smith
相关产品推荐
相关产品推荐

