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

但是,当我创建一个以Origin为ELB的CloudFront发行版时,我的所有网站都开始获得默认页面的服务。如何将Apache配置为可识别CDN和ELB。

我以为我可以使用一些 header ,但看起来不像任何服务器。以下是在CloufFront后面时我正在获取的请求的 header 。 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传递的任何主机信息。我该如何解决?

谢谢

最佳答案

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

关于php - 具有单一CloudFront分布的多个网站无法路由,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/28407299/

10-16 17:57