Api网关和区域自定义域作为CloudFront起源

时间:2019-05-29 18:49:40

标签: amazon-web-services aws-api-gateway amazon-cloudfront

我想创建一个具有区域自定义域的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 

1 个答案:

答案 0 :(得分:0)

当CloudFront与原始服务器建立连接时,它总是使用原始域名来查找原始服务器的IP地址...但是当它与原始服务器否定TLS时,它将SNI设置为与HTTP { {1}}标头,它将发送到源。

这两个值可以相同,也可以不同,但​​是Host / SNI始终彼此相同,并且始终是两个值之一:

  • 这是原始域名(可能会在Lambda @ Edge原始请求触发器中在自定义原始参数中进行修改),当“缓存行为”设置包括将白名单Host标头(或所有标头)以转发到原始位置,或
  • 它是浏览器发送到CloudFront的 HTTP Host标头(当通过缓存行为设置执行时,可以在Lambda @ Edge请求触发器的请求标头中进行修改) 包括将Host标头列入白名单,以转发到源。

因此,从本质上讲,如果转发Host标头,则名称必须匹配,否则,名称必须匹配。

此外,如果不同,则实际上必须在DNS中配置主机名并指向分配的区域API端点-您不能仅将分配的DNS别名目标指向“原始域名”。

不幸的是,在某些情况下,CloudFront在使用403错误时有些令人困惑。有时,此代码用于更正确地被视为400或421错误的错误,因此,在检查403的某些问题时,响应正文很重要。如果将域名指向CloudFront而不将其设置为备用域名对于该分发,您将得到一个403,其内容为“ Bad Request”,并且该事件将不会记录在CloudFront日志中,因为缺少“备用域名”设置会阻止CloudFront将请求映射到您的特定分发。 / p>