【问题标题】:How to know the CNAME that was used to access a cloudfront end point when at the origin of the cloudfront如何知道在云端起点时用于访问云端端点的 CNAME
【发布时间】:2019-08-25 02:21:39
【问题描述】:

所以我有一个云端分发,它路由到一个 api 网关端点——它又路由到 lambda。

那我有几个 cnames 可以用来到达这个云端。

如何在 api 网关和/或 lambda 中检索用于访问云端的原始域。

我希望 cloudfronts 添加一些标头来指示请求通过的域。

【问题讨论】:

  • 你试过Host HTTP 头吗?
  • 到达 api 网关的主机头是 api 网关端点的“主机” :( 正如您所认为的云前端对 api 网关进行 http 调用。

标签: amazon-web-services amazon-cloudfront


【解决方案1】:

根据描述,您的设置似乎如下: CloudFront(CNAME) --> API 网关 --> lambda 对吗?

HOST 标头是一种方式,但如果您的 API 网关是边缘优化的,则不能这样做,因为边缘优化模式下的 API 网关在后端使用 CloudFront。

检测原始CNAME的方法:

  1. CloudFront 访问日志(字段 16 x-host-header)

  2. 使用 Lambda@edge 查看器请求解析 HOST 标头并向其注入客户标头和 HOST 标头的值,因为 CloudFront 将自定义标头转发到原始默认值,您应该能够看到自定义标头在 API 网关或 Lambda 中。

【讨论】:

  • 非常感谢。我发现了另一个问题,即使您将主机标头添加为白名单标头,到达 api 网关 url 的主机也是 api 网关端点的主机 - 正如您所期望的那样 - 作为 AFAIK,http 规范是原因为什么首先设置 Host 标头。所以我怀疑你的 Lambda@edge 解决方案可能是唯一的方法。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 2023-01-19
  • 1970-01-01
  • 2018-10-12
  • 2013-03-02
  • 2023-03-21
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多