如何配置AWS CloudFront同时对接S3与Lightsail实现路径级路由
解决方案
你提出的架构完全可行,无需使用子域名,通过CloudFront的多源站+多缓存行为配置即可实现需求,具体操作和注意事项如下:
具体配置步骤
- 添加Lightsail为CloudFront源站
- 进入你的CloudFront分发
bbb.cloudfront.net的配置页,切换到「源」标签页,点击「添加源」 - 源类型选择「自定义源」,源域名填写Lightsail实例的默认公有域名(不要直接填公网IP,IP无法申请可信SSL证书,会导致HTTPS源站校验失败)
- 根据你Lightsail上WordPress的部署配置选择端口:HTTPS选443,HTTP选80,源站协议建议匹配WordPress的配置,优先选择HTTPS
- 其余配置保持默认即可,保存源站
- 添加/magazine路径的缓存行为
- 切换到「行为」标签页,点击「创建行为」
- 路径模式填写
/magazine/*,可以匹配所有/magazine开头的路径(含子路径) - 源和源组选择刚才创建的Lightsail自定义源
- 允许的HTTP方法选择「GET、HEAD、OPTIONS、PUT、POST、PATCH、DELETE」,适配WordPress后台操作、评论提交等动态请求
- 缓存策略如果是动态站点建议选择
Managed-CachingDisabled关闭缓存,避免WordPress内容更新不及时;如果需要缓存静态资源,可以自定义缓存规则仅缓存/wp-content、/wp-includes下的静态资源 - 优先级设置为比默认行为(路径为*)更小的数字,确保该规则优先匹配,保存行为后等待CloudFront分发生效即可
关键注意事项
- WordPress站点URL配置:登录WordPress后台,将「WordPress地址(URL)」和「站点地址(URL)」都修改为
https://example.com/magazine,避免WordPress生成错误的跳转链接和资源链接 - 路径匹配处理:CloudFront默认会将完整路径转发给Lightsail源站,因此需要将WordPress部署在Lightsail Web服务的
/magazine子目录下;如果希望将WordPress部署在Web服务根目录,可以配置CloudFront Function在请求阶段移除路径的/magazine前缀,无需调整WordPress部署路径 - 源站访问控制:Lightsail实例的防火墙需要开放80/443端口给CloudFront的IP段,避免CloudFront请求被拦截;如果是测试阶段可以临时开放所有IP访问,验证配置无误后再收紧权限
- SSL证书校验:确保Lightsail的自定义源域名拥有可信CA颁发的有效SSL证书,使用Lightsail默认公有域名无需额外配置,自带有效证书
内容的提问来源于stack exchange,提问作者hadeel92
相关产品推荐
相关产品推荐

