我想创建一个具有区域自定义域的API网关,并将其用作CloudFront分发源。我的主要动机是控制MinimumProtocolVersion / TLS1.2
我的问题是,区域自定义域的自定义域名是否必须与CloudFront发行版的域名匹配,或者是否可以分隔域名。
当不匹配时,我的团队遇到了CF的403错误,我只是仔细检查了这是否完全可行
示例:
ApiGW:
- Custom Domain Name (REGIONAL). For example www.sample.com (
- matching ACM certificate in eu-west-1
- No R53 records referencing this domain name
Cloudfront:
- ACM certificate in us-east-1
- Alias www.example.com
- Origin; www.sample.com
- R53 recrod for www.example.com, in hosted zone example.com mapped to the CF disitribution domain name
答案 0 :(得分:0)
当CloudFront与原始服务器建立连接时,它总是使用原始域名来查找原始服务器的IP地址...但是当它与原始服务器否定TLS时,它将SNI设置为与HTTP { {1}}标头,它将发送到源。
这两个值可以相同,也可以不同,但是Host
/ SNI始终彼此相同,并且始终是两个值之一:
Host
标头(或所有标头)以转发到原始位置,或Host
标头(当通过缓存行为设置执行时,可以在Lambda @ Edge请求触发器的请求标头中进行修改) 包括将Host
标头列入白名单,以转发到源。因此,从本质上讲,如果转发Host
标头,则名称必须匹配,否则,名称必须匹配。
此外,如果不同,则实际上必须在DNS中配置主机名并指向分配的区域API端点-您不能仅将分配的DNS别名目标指向“原始域名”。
不幸的是,在某些情况下,CloudFront在使用403错误时有些令人困惑。有时,此代码用于更正确地被视为400或421错误的错误,因此,在检查403的某些问题时,响应正文很重要。如果将域名指向CloudFront而不将其设置为备用域名对于该分发,您将得到一个403,其内容为“ Bad Request”,并且该事件将不会记录在CloudFront日志中,因为缺少“备用域名”设置会阻止CloudFront将请求映射到您的特定分发。 / p>