两个 CloudFront 分配:
我尝试的选项是拥有两个单独的 CloudFront Web 分配,一个用于 s3 存储桶中的静态站点(A 版本),另一个用于 s3 存储桶中的另一个静态站点(B 版本)。我尝试使用 Route53 加权路由策略,其中我为 www.domain.com Route53 记录添加了两条记录,一条指向权重为 0 的 CloudFront Distribution A,另一个指向权重为 0 的 CloudFront Distribution B。我想做 A/B 测试。
使用 www.domain.com 作为 Prod 发行版 A 的备用 CNAME。
使用 *.domain.com 作为 Prod 分发 B 的备用 CNAME。
我的内容总是由 A 提供。我希望它以相等的比例从两个版本提供。
有什么帮助吗?
您无法使用 CloudFront 执行此操作。
tl; dr:您的通配符与在另一个发行版上配置了特定的冲突主机名的主机名不匹配。
您在发行版 B 上创建了通配符备用主机名,以尝试解决此限制:
如果备用域名已存在于另一个 CloudFront 分配中,则您无法向 CloudFront 分配添加备用域名,即使您的 AWS 账户拥有另一个分配也是如此。
当然,这种限制是有原因的,它也解释了为什么分发 B 永远不会看到您的请求,即使您的 DNS 配置按预期工作。
规则的例外...
但是,您可以添加通配符备用域名,例如 *.example.com,其中包括(重叠)非通配符备用域名,例如 www.example.com。重叠的域名可以在同一个分配中,也可以在不同的分配中,只要这两个分配都是使用同一个 AWS 账户创建的。
... 没有提供您预期的例外情况。
当 Web 浏览器连接到端点时,浏览器是如何到达端点的——它是静态 A 记录、别名、CNAME、整个 CNAME 级联还是主机文件中的条目?服务器不知道,因为该信息没有保留......它知道您到达的 IP 地址,但它来自许多分发共享的池,所以您的请求如何到达特定的 CloudFront 边缘(设置遵循了 DNS 记录,您的“A”或“B”——它们甚至可能不是 CloudFront 端的不同 IP 地址)不能用于确定哪个分配应该为您的请求提供服务。
CloudFront 用于确定哪个分发应为特定请求提供服务的唯一机制是Host:
传入 http 请求中的 HTTP标头(也可能是 SNI 协商,但这不会改变任何内容,无论 CloudFront 是否使用它)。
将请求视为属于特定发行版是根据其他任何东西来决定的——这是不可能的,因为没有其他可用的东西可以作为它的基础。
通过逻辑扩展,只有一个分布可以与任何给定的传入请求Host:
标头相关联,例如www.example.com
(您的分布“A”。)
*.example.com
实际上,另一个发行版(“B”)只能为除 www.example.com
(或您与发行版关联的任何其他更具体的备用域名,否则会匹配该通配符)之外的所有内容提供请求,因为同一发行版上的另一个发行版具有更具体的主机名关联 (“A”) 的帐户将特定主机名声明www.example.com
为*
通配符的例外。
本质上,首先检查请求是否有与主机名完全匹配的分配,并且只有当没有匹配时,才会将具有通配符的分配用于请求。
归档时间: |
|
查看次数: |
2085 次 |
最近记录: |