首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >从AWS lambda@edge访问原始URL

从AWS lambda@edge访问原始URL
EN

Stack Overflow用户
提问于 2017-12-14 15:34:50
回答 2查看 5.5K关注 0票数 9

我试图在AWS Cloudfront上使用lambda@edge实现多个网站的“代理”。

我的设置大致如下:

DNS:*.domain.com -> some_uuid.cloudfront.net (云锋分布)

云阵: some_uuid.cloudfront.net -> s3桶起源

s3桶:网站/(包含多个网站的文件夹)

lambda@edge函数:定义为原始-请求

我的lambda@edge函数非常简单:

  1. 检查网站资源是否存在于s3桶中。
  2. 如果是,请将请求uri更改为资源s3 url。
  3. 如果没有,则向后端服务器发送请求,以呈现资源,存储在s3上并返回它。

我有困难获得的起源域的网站。例如,如果我尝试访问"my_website.domain.com“-在我的lambda函数中,我没有来自请求的域信息。

我认为我可以实现另一个lambda@edge函数作为查看器请求将域作为标题传递,但如果可以的话,我更愿意避免这种情况。

还有别的解决办法吗?

谢谢

EN

Stack Overflow用户

回答已采纳

发布于 2017-12-15 19:27:27

因此,用例的问题是,暴露于原点的主机标头的值--请求L@E函数是s3桶的域名,而不是原始主机标头CloudFront从查看器接收到的值,对吗?

为了查看查看器接收到的原始主机头CloudFront,需要将其白名单。但是,CloudFront目前不允许为s3源文件添加白名单标题。这是一个缺陷/限制,应该由CloudFront修复。不过,有一个解决办法。如果s3桶是可公开访问的(也就是说,您没有使用原产地访问标识),那么您可以使用一个网站端点(如myBucket.s3-网站-us 1.amazonaws.com)将您的S3原点配置为自定义源。然后,你将能够白名单主机标题,并看到您的网站的域名,应观众的要求。然后,您可以根据用例修改源请求。还不要忘记将主机标头更改回s3端点,以便S3能够接受请求。

票数 4
EN
查看全部 2 条回答
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/47817019

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档