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

时间:2015-02-09 10:11:53

标签: php apache amazon-cloudfront amazon-elb

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

然而,当我创建一个带有Origin的CloudFront Distribution作为ELB时,我的所有网站都开始获得默认页面。如何将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传递的任何主机信息。我该如何解决这个问题?

由于

2 个答案:

答案 0 :(得分:6)

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

答案 1 :(得分:2)

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

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

**更新**

尝试将主机标头转发到原点。您可以通过编辑行为,将“转发标题”设置为“白名单”并将“主机”添加为自定义标题,然后允许更改进行传播来实现此目的。