多个CloudFront分配出现自动重定向

0

【以下的问题经过翻译处理】 我目前有两个CloudFront分配,分别使用了2个不同的证书和域名,它们都指向同一个S3 Bucket。

主分配为123456789.cloudfront.net,使用备用域名+证书:main.mydomain.com

第二个分配是987654321.cloudfront.net,使用备用域名+证书:sub1.otherdomain.com

在DNS(我使用的是cloudflare)中,我有一个CNAME用于主分发的域名:

main.mydomain.com cname到123456789.cloudfront.net

并且我添加指向此其他CNAME的其他子域,以便更好地管理(因为我有很多子域):

sub1.mydomain.com cname到main.mydomain.com

但我还将其他域的子域指向此(因为管理和某些硬编码链接,所以我无法将其指向自己的分发): #sub1.otherdomain.com cname到main.mydomain.com

理论上,我需要使用cloudfront函数将sub1.otherdomain.com重定向到其分发(987654321.cloudfront.net),但是在没有函数的时候也能正常重定向,并且我不知道为什么(这不是预期的行为,或者有一些我不知道的cloudfront的功能),因为不存在从第一个分发到第二个分发的指向/重定向的配置唯一指向cloudfront的DNS是main.mydomain.com(cname到123456789.cloudfront.net),并且证书是不同的

这是否符合预期?需要确定是否不会对生产工作产生问题。

profile picture
专家
已提问 5 个月前33 查看次数
1 回答
0

【以下的回答经过翻译处理】 实际上,这是预期的行为,但我不建议以这种方式继续设置。

首先,请记住,在DNS中使用CNAME记录不会改变客户端在进行HTTPS请求时使用的Host标头的值,它只是引用另一个DNS记录的一种方式,以最终获得要连接的IP地址。

DNS与返回CloudFront的内容无关 - 它只是返回附近缓存主机的有效IP地址。缓存主机提供的实际内容由请求中的Host标头的值确定。请注意,有一些例外情况,现在可以先请假定这是正确的。

当您的客户端连接到sub1.otherdomain.com时,将会发生如下过程:

  1. 客户端将对sub1.otherdomain.com进行DNS查询。 DNS将跟随CNAME,依次查询main.mydomain.com然后是123456789.cloudfront.net,并最终返回与123456789.cloudfront.net关联的A记录
  2. 客户端将连接到DNS查询返回的IP地址之一。
  3. 在TLS握手期间,客户端将指定请求的域名(sub1.otherdomain.com),而CloudFront将返回sub1.otherdomain.com的相关证书和内容(SNI)。

这种情况的主要问题在于,如果您删除123456789.cloudfront.net,CloudFront将不再响应该地址的DNS请求,sub1.otherdomain.com将停止工作。

我认为您可以将sub1.otherdomain.com的CNAME设置为987654321.cloudfront.net - DNS只是将名称转换为IP地址,因此我无法确定这会如何影响您的“管理和一些硬编码的链接”。

profile picture
专家
已回答 5 个月前

您未登录。 登录 发布回答。

一个好的回答可以清楚地解答问题和提供建设性反馈,并能促进提问者的职业发展。

回答问题的准则