首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >用CloudFront发送自定义主机头

用CloudFront发送自定义主机头
EN

Server Fault用户
提问于 2017-12-18 17:11:32
回答 1查看 15.6K关注 0票数 6

我有一个ELB,我想把它放在CloudFront后面。假设ELB是一个例子,美国东部-1.elb.amazonaws.com。它只接受主机头设置为www.example.com的请求,我现在想用CloudFront托管请求。可以告诉CloudFront使用这个Host头吗?当我试图在AWS控制台中为Host设置CloudFront头时,我会收到错误消息com.amazonaws.services.cloudfront.model.InvalidArgumentException: The parameter HeaderName : Host is not allowed. (Service: AmazonCloudFront; Status Code: 400; Error Code: InvalidArgument; Request ID: dead-beef-badc0ffee1)

EN

回答 1

Server Fault用户

回答已采纳

发布于 2017-12-19 01:38:11

假设,如果ELB上的服务只回答www.example.com,那么这就是您要指向CloudFront的主机名-因此,您的解决方案很简单:在缓存行为设置中,白名单上的Host头转发到原点。

在此配置中,CloudFront通过浏览器发送的Host标头,必须将其添加到发行版配置中的备用域名列表中。对dzzzexample.cloudfront.net的请求将失败,因为您的来源不会理解它们,但这通常是好的,因为您不想让搜索引擎在CDN域名下索引您的内容。

不过,这可能不是你的计划。如果该配置不适用于您的应用程序,则需要Lambda@边缘源请求触发器来修改Host头。

代码语言:javascript
运行
复制
'use strict';

// force a specific Host header to be sent to the origin

exports.handler = (event, context, callback) => {
    const request = event.Records[0].cf.request;
    request.headers.host[0].value = 'www.example.com';
    return callback(null, request);
};

注意,Host头在Origin触发器中是不可变的,除非您将缓存行为配置为白名单Host头,如上面所述。在本例中,您是在白名单由Lambda@Edge触发器设置的Host头,而不是浏览器设置的头部,但是CloudFront配置是相同的。

您不能在Host中使用CloudFront中的静态自定义源头配置--这不是支持的配置。Lambda触发器具有与设置相同的效果,如果允许的话。

票数 11
EN
页面原文内容由Server Fault提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://serverfault.com/questions/888714

复制
相关文章

相似问题

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