Несколько веб-сайтов с одной раздачей CloudFront не маршрутизируются

У меня есть несколько веб-сайтов - около 20. Все они представляют собой приложения php, которые в настоящее время размещены на одной машине в apache. Теперь с конфигурациями виртуального хоста я могу разместить их всех с помощью одного единственного ELB (если только они не должны быть через HTTPS). Я могу легко направить входящий запрос на сервер из соответствующего каталога.

Однако, когда я создаю дистрибутив CloudFront с Origin как ELB, все мои веб-сайты начинают получать страницу по умолчанию. Как я могу настроить apache для поддержки CDN и ELB.

Я думал, что могу использовать некоторые заголовки, но не похоже, что это что-то серверное. Ниже приведены заголовки, которые я получаю для запроса за CloufFront. CDN->ELB->МОЕ_ПРИЛОЖЕНИЕ

"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. Как мне обойти это?

Спасибо


person ykesh    schedule 09.02.2015    source источник


Ответы (2)


Из вашего описания проблемы и заголовков, которые вы опубликовали, я думаю, вам нужно настроить дистрибутив CloudFront для передачи заголовка хоста в источник. Посмотрите здесь: http://docs.aws.amazon.com/AmazonCloudFront/latest/DeveloperGuide/header-caching.html#header-caching-web

person Alex Z    schedule 09.02.2015

Вам не нужно настраивать Apache для поддержки ELB / CF.

Вы добавили записи альтернативных доменных имен (CNAME) в конфигурацию Cloudfront Distribution?

** Обновлять **

Попробуйте перенаправить заголовок хоста в источник. Вы можете сделать это, отредактировав поведение (я), установив «Пересылать заголовки» в «Белый список» и добавив «Хост» в качестве пользовательского заголовка, а затем разрешив распространение изменений.

person Mark Kelly    schedule 09.02.2015
comment
Да, в моем дистрибутиве есть записи CNAME. На всех сайтах отображается одна и та же страница, если запись CNAME для них является записью, предоставленной Cloudfront Distribution. Когда CNAME для этих сайтов относится к ELB, он работает нормально, но в тот момент, когда я делаю эти CNAME как страницы по умолчанию CDN, они обслуживаются. Источником дистрибутива является доменное имя моего ELB. - person ykesh; 09.02.2015