具有单个 CloudFront 分发的多个网站不会被路由

Multiple websites with Single CloudFront Distribution does not get routed

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

但是,当我创建一个以 Origin 作为 ELB 的 CloudFront 分配时,我的所有网站都开始使用默认页面。如何将 apache 配置为 CDN 和 ELB 感知。

我想我可以使用一些 headers 但看起来它不能提供任何服务。以下是 headers 我在 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 后面时,我没有得到 Amazon 的 ELB 传递的任何主机信息。我该如何解决这个问题?

谢谢

您不需要将 Apache 配置为 'ELB / CF aware'

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

** 更新**

尝试将您的主机 header 转发到源。您可以通过编辑行为,将 'Forward Headers' 设置为 'Whitelist' 并将 'Host' 添加为自定义 header,然后允许更改传播来完成此操作。

根据您的问题描述和您发布的 headers,我认为您需要配置 CloudFront 分发以将主机 header 传递到源。看这里:http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web