Как настроить DNS для распространения CloudFront с ACM для тестовых и рабочих серверов, указывающих на разные корни каталогов?

Я столкнулся с трудностями при обслуживании запросов от test.domain.com с конфигурацией с комбинацией AWS Certificate Manager (ACM), AWS EC2 (linux AMI), AWS CloudFront (CF), Google DNS и сервера Apache.

У меня есть следующие настройки в каталоге public_html:

У меня 2 папки в /var/www/html

  • толкать
  • тестовое задание

Цель состоит в том, чтобы обслуживать запросы, полученные от test.domain.com, используя каталог test, а запросы, полученные от domain.com, используя каталог prod.

Настройка работает нормально с ssl-сертификатами acme, т. Е. Для производства (domain.com) мы используем сертификат acme SSL, а DNS указывает на эластичный IP-адрес и работает нормально. Даже test.domain.com отлично работал с настройкой acme ssl.

Однако я пытаюсь перейти на ACM. Поскольку он работает только с CF и ELB (AWS Elastic Load Balancer), создан дистрибутив CF.

  • Создан один дистрибутив CloudFront (CF), указывающий на конечную точку AWS EC2 с исходным путем /test.
  • Перенаправили test.domain.com на раздачу CF в Google DNS, так как домен у них прописан.

При такой настройке test.domain.com также представляет domain.com, а не тестовый сервер, как ожидалось.

https.conf имеет правильный DocumentRoot для каждого ServerName. Но запрос не попадает на виртуальный хост тестового сервера.

чего не хватает? пожалуйста, предложите ..


person Krishna Chebrolu    schedule 10.07.2020    source источник


Ответы (1)


Вы можете попробовать следующее:

  1. Добавьте и domain.com, и test.domain.com в список CNAME CloudFront.
  2. Сертификат ACM с общим именем / SAN как domain.com и * .domain.com (или test.domain.com)
  3. В поведении кэша CloudFront, whiteist HOST header, это гарантирует, что при доступе клиента к domain.com, cloudfront отправит то же значение в заголовке хоста при контакте с источником.

Ссылка: Перенаправить заголовок хоста

person James Dean    schedule 10.07.2020
comment
Спасибо @ james-dean за ответ. Теперь я получаю ошибку ERR_CONNECTION_CLOSED для test.domain.com. AH00569: client sent HTTP/1.1 request without hostname (see RFC2616 section 14.23): / - person Krishna Chebrolu; 10.07.2020
comment
где вы видите эту ошибку? О происхождении? или клиент? - person James Dean; 10.07.2020
comment
CloudFront следует RFC и всегда добавляет заголовок HOST к источнику - person James Dean; 10.07.2020
comment
ошибка видна в источнике /var/log/httpd/error_log, и я предполагаю, что она распространилась на клиента. - person Krishna Chebrolu; 10.07.2020
comment
после комментирования директивы для порта 80 в httpd.conf тестовый сервер работает нормально. директива порта 80 конфликтовала с синтетической записью перенаправления в DNS. Однако вместо test.domain.com отображается URL-адрес распространения облачного интерфейса. Есть ли какое-либо средство от этого, например, если перенаправление в DNS настроено на CNAME, связанную с распределением CF, не сработает ли это? - person Krishna Chebrolu; 12.07.2020