如何通过CloudFront实现跨子域名URL路径透明代理?
CloudFront实现跨子域名路径透明代理配置方案
你要实现的透明映射本质是靠CloudFront做边缘反向代理,用户请求到www.example.com对应路径时,CloudFront在边缘侧完成回源拉取、路径改写的动作,全程不返回跳转响应给浏览器,地址栏自然保持www域名的路径,对用户完全无感知。
前置准备
- 将
www.example.com的域名解析切到CloudFront分配的分发域名,确保用户访问www域名的所有请求先到达CloudFront边缘节点 - 提前申请覆盖
www.example.com的SSL证书,证书需上传至AWS us-east-1区域,满足CloudFront的证书挂载要求 - 确认
api.example.com指向的ALB安全组后续要放通CloudFront的回源IP段,避免回源被拦截
具体配置步骤
- 创建新的CloudFront分发,源站地址填写已绑定ALB的
api.example.com,回源协议选择「HTTPS Only」或者「匹配 viewer 协议」,避免明文回源。 - 配置优先级最高的缓存行为,路径模式填写
/brands/*,专门处理需要映射的路径请求。注意该规则优先级必须高于默认的/*路径规则,否则不会生效。 - 为
/brands/*的缓存行为绑定自定义源站请求策略,核心配置两项:- 路径改写:将请求路径的前缀
/brands/替换为/static/brands/,比如用户访问www.example.com/brands/a.png,CloudFront回源时会自动请求api.example.com/static/brands/a.png - 回源头设置:将回源请求的
Host头值固定为api.example.com,避免ALB因Host头不匹配返回默认站点内容或403错误
- 路径改写:将请求路径的前缀
- 配置默认的
/*路径缓存行为,按你原有业务需求指向www站点的实际源站即可,不会影响其他非/brands路径的正常访问。
验证要点
- 配置生效前先用CloudFront分配的默认测试域名访问对应路径,比如
dxxxxxxxxx.cloudfront.net/brands/test.html,确认返回内容和api.example.com/static/brands/test.html完全一致,且响应头里没有3xx跳转状态码。 - 不要给
/brands/*路径配置任何重定向规则,所有回源动作都是CloudFront和源站之间的内部通信,不会暴露给客户端。 - 如果回源出现403错误,优先检查ALB安全组是否放通CloudFront回源IP、回源Host头是否配置正确。
内容的提问来源于stack exchange,提问作者Howins
相关产品推荐
相关产品推荐

