具有Single CloudFront Distribution的多个网站不会被路由


Multiple websites with Single CloudFront Distribution does not get routed

我有几个网站-大约20个。所有这些都是php应用程序,目前托管在apache中的一台机器上。现在有了虚拟主机配置,我可以用一个ELB来承载所有这些配置(除非它们需要通过HTTPS)。我可以很容易地将传入的请求从适当的目录路由到服务器。

然而,当我将创建一个以Origin作为ELB的CloudFront分发时,我的所有网站都开始获得默认页面。如何将apache配置为支持CDN和ELB。

我想我可以使用一些头,但看起来它不会提供任何服务。以下是我在CloufFront后面收到的请求的标题。CDN->ELB->MY_APPLICATION-

"host": "MY_PUBLIC_FACING_ELB_DNS_NAME",
"cache-control": "cf-no-range-cache",
"user-agent": "Amazon CloudFront",
"via": "1.1 d6e48c0d02a2d98c0ccacee7577ee8c2.cloudfront.net (CloudFront)",
"x-amz-cf-id": "rB-gbTCqWq2IeZ-B25-d36rp9j3FmFuicsdPOltDBuYk0HPgLyLj_g==",
"x-forwarded-for": "54.169.155.12, 54.240.148.53",
"x-forwarded-port": "80",
"x-forwarded-proto": "http",
"connection": "keep-alive"

当没有配置ELB时,我得到以下内容。

"host": "www.example.com",
"accept": "*/*",
"user-agent": "Mozilla/5.0 (Windows NT 6.3; WOW64) AppleWebKit/537.36   (KHTML, like Gecko) Chrome/40.0.2214.91 Safari/537.36",
"accept-encoding": "gzip, deflate, sdch",
"accept-language": "en-US,en;q=0.8",
"cookie": "_sm_au=aaaaaaaaaaaaaaaaaaaa",
"via": "MY_SQUID_SERVER_NAME_VERSION",
"z-forwarded-for": "AAAAAAAAAAAA",
"cache-control": "max-age=259200",
"xroxy-connection": "keep-alive",
"connection": "Keep-Alive",
"x-forwarded-for": "MY_PROXY_SERVER'S_IP"

当在CloudFront后面托管时,我不会得到亚马逊ELB传递的任何主机信息。我该如何解决这个问题?

感谢

根据您发布的问题描述和标头,我认为您需要配置CloudFront分发,以便将Host标头传递到原点。看看这里:http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-缓存web

您不需要将Apache配置为"ELB/CF感知"

您是否已将备用域名(CNAME)条目添加到Cloudfront分发配置中?

**更新**

请尝试将主机标头转发到原点。您可以通过编辑行为,将"Forward Headers"设置为"Whitelist",并将"Host"添加为自定义标头,然后允许传播更改来做到这一点。