基于选定请求的缓存 Headers - Cloudformation 的 CloudFront 行为?
Cache Based on Selected Request Headers - CloudFront Behavior for Cloudformation?
我正在编写 Cloudformation 来部署 ELB 源 CloudFront 分配。除了我在 AWS 文档中找不到的一个选项外,我已经完成了它。我正在将所有流量重定向到 https,因此我需要在我的分配上设置行为以使用 "All" 或 "Whitelist" 作为 "Cache Based on Selected Request Headers"。这可以在任何地方的 Cloudformation 中指定吗?如果有怎么办?
默认为None,这是一个无效选项,returns错误:
要将 SSL 与 ELB 源一起使用,请转发所有 header 或将主机 header 列入白名单。如果您不想转发任何 header,请将源协议策略更改为仅 HTTP。
在 DefaultCacheBehavior
和 CacheBehaviors
的成员中,您需要一个类似于以下内容的 ForwardedValues
:
{
"Cookies" : Cookies,
"Headers" : [ String, ... ],
"QueryString" : Boolean,
"QueryStringCacheKeys" : [ String, ... ]
}
Headers
是要转发的 header 的字符串数组,例如Host
.
尝试使用 ELB 作为 Origin 时的错误是新的(2018 年 1 月左右添加)。
以前,配置会被接受,但实际上不适用于 HTTPS,因为 CloudFront 要求源提供有效的 SSL 证书。
"Valid" 表示所有这些:
- 必须由受信任的 public CA 签名(因此不能是 self-signed)
- 不能过期
- 必须匹配CloudFront中配置的源域名或CloudFront发送的
Host
header到原点。 (除非你把浏览器发送的Host
header加入白名单,否则这两个值是一样的——传出请求的Host
header设置为源域名.)
除非您转发 Host
header 并在 ELB 上拥有与 Host
[匹配的证书,否则最后一个条件不可能满足 AWS 发布的 ELB 主机名作为来源=53=] 由浏览器发送,因为您无法获得 .amazonaws.com
子域的 SSL 证书,因为那不是您的域。这也意味着您不能在浏览器中使用分配的 dzczcexample.cloudfront.net
主机名来测试 HTTPS 到使用 ELB 主机名作为源域名的 ELB 源——CloudFront 将抛出 502 Bad Gateway 错误并抱怨它无法连接到原点。它实际上意味着它无法验证来源,因为 SSL 证书的主题与 CloudFront 尝试转发的请求不匹配。
我正在编写 Cloudformation 来部署 ELB 源 CloudFront 分配。除了我在 AWS 文档中找不到的一个选项外,我已经完成了它。我正在将所有流量重定向到 https,因此我需要在我的分配上设置行为以使用 "All" 或 "Whitelist" 作为 "Cache Based on Selected Request Headers"。这可以在任何地方的 Cloudformation 中指定吗?如果有怎么办?
默认为None,这是一个无效选项,returns错误:
要将 SSL 与 ELB 源一起使用,请转发所有 header 或将主机 header 列入白名单。如果您不想转发任何 header,请将源协议策略更改为仅 HTTP。
在 DefaultCacheBehavior
和 CacheBehaviors
的成员中,您需要一个类似于以下内容的 ForwardedValues
:
{
"Cookies" : Cookies,
"Headers" : [ String, ... ],
"QueryString" : Boolean,
"QueryStringCacheKeys" : [ String, ... ]
}
Headers
是要转发的 header 的字符串数组,例如Host
.
尝试使用 ELB 作为 Origin 时的错误是新的(2018 年 1 月左右添加)。
以前,配置会被接受,但实际上不适用于 HTTPS,因为 CloudFront 要求源提供有效的 SSL 证书。
"Valid" 表示所有这些:
- 必须由受信任的 public CA 签名(因此不能是 self-signed)
- 不能过期
- 必须匹配CloudFront中配置的源域名或CloudFront发送的
Host
header到原点。 (除非你把浏览器发送的Host
header加入白名单,否则这两个值是一样的——传出请求的Host
header设置为源域名.)
除非您转发 Host
header 并在 ELB 上拥有与 Host
[匹配的证书,否则最后一个条件不可能满足 AWS 发布的 ELB 主机名作为来源=53=] 由浏览器发送,因为您无法获得 .amazonaws.com
子域的 SSL 证书,因为那不是您的域。这也意味着您不能在浏览器中使用分配的 dzczcexample.cloudfront.net
主机名来测试 HTTPS 到使用 ELB 主机名作为源域名的 ELB 源——CloudFront 将抛出 502 Bad Gateway 错误并抱怨它无法连接到原点。它实际上意味着它无法验证来源,因为 SSL 证书的主题与 CloudFront 尝试转发的请求不匹配。