Вопрос или проблема
Я проверял различные сведения на Google и документации AWS, но не могу понять это.
У меня есть настроенный экземпляр EC2 с доменом, который обслуживается через виртуальный хост, и мне нужно использовать CDN для контента на сайте, в основном для изображений, т.е. для активов сайта.
Детали экземпляра EC2
- t2.micro
- LAMPP
- Настроенный виртуальный хост
- DNS: Route 53
- Без ELB
- EBS
- SSL
Детали распространения CloudFront
- Происхождение: example.com
- Метод доставки: Web
Что я пытался сделать, так это использовать имя домена в происхождении, и домен CloudFront теперь перенаправлял на имя домена происхождения, а также получал активы по https.
Я не заметил никакого влияния на скорость сайта, проверяя из разных геолокаций, поэтому я начал сомневаться, было ли это сделано правильно.
Часть, которую мне нужно решить, это какой из приведенных ниже путей правильный для настройки CloudFront с EC2:
- Используйте DNS экземпляра EC2 для ‘Origin Domain Name’ и добавьте имя каталога в ‘Origin Path’ для виртуального хоста
- Просто добавьте имя домена в ‘Origin Domain Name’
Спасибо за помощь!
Правка
Прикрепляю детали Route 53
- A запись => Имя: www.example.com, Значение: IP АДРЕС & Политика маршрутизации: Простая
- A запись => Имя: example.com, Псевдоним: Да & Цель псевдонима: www.example.com
Правка02
Обновленная настройка AWS
Настройка AWS между EC2, Route 53 & CloudFront
В DNS example.com должен быть A-запись с установленным псевдонимом на Да, указывающим на конечную точку CloudFront.
Это означает, что example.com больше не указывает на ваш сервер происхождения, поэтому вам нужно использовать другое имя в качестве хоста происхождения. Одним из вариантов является использование публичного DNS-имени EC2 для экземпляра.
По умолчанию CloudFront установит имя домена происхождения в заголовке Host:
, когда будет отправлять запрос к экземпляру. Вы можете переопределить это в поведении кеша, добавив заголовок Host
в белый список, чтобы example.com отправлялся внутри запроса к источнику, даже если запись DNS, используемая для фактического нахождения источника, отличается.
Если $ dig example.com
не возвращает большое количество IP-адресов, то вы в данный момент не используете CloudFront.
HTTP-ответы, которые приходят от CloudFront, также будут содержать дополнительные заголовки, включая X-Amz-Cf-id
, X-Cache
, Via
, и иногда Age
.
Ответ или решение
Для настройки Amazon CloudFront с пользовательским источником на EC2-инстанс, важно следовать определенным шагам, чтобы быть уверенным, что CDN будет функционировать эффективно и оптимизировать производительность вашего сайта. Ниже приведен подробный пошаговый процесс настройки.
Шаг 1: Подготовка EC2 и виртуального хоста
Убедитесь, что ваш EC2-инстанс правильно настроен для работы с LAMPP (Linux, Apache, MySQL, PHP). Убедитесь, что виртуальный хост настроен так, чтобы обслуживать ваш домен (например, example.com). Вам необходимо убедиться, что ваш сайт работает нормально без CloudFront, чтобы устранить любые возможные проблемы на уровне сервера.
Шаг 2: Настройка CloudFront Distribution
-
Создайте новое CloudFront Distribution:
- Войдите в свою консоль AWS и откройте сервис CloudFront.
- Нажмите "Create Distribution" и выберите "Web".
-
Настройка источника (Origin):
- В разделе "Origin Settings" используйте следующие параметры:
- Origin Domain Name: Здесь вам нужно использовать публичное DNS-имя вашего EC2-инстанса (например, ec2-123-45-67-89.compute-1.amazonaws.com) или любой другой подходящий домен, который вы используете.
- Origin Path: Указание пути к директории (если это требуется) не обязательно, если ваш веб-сайт работает из корневой директории. Если ваши ресурсы (например, изображения) находятся в каком-либо подкаталоге, укажите его здесь.
- В разделе "Origin Settings" используйте следующие параметры:
-
Настройка Кеширования:
- Убедитесь, что в настройках кеширования соблюдены ваши требования по TTL (Time To Live) и другие параметры кеширования.
-
SSL-соединение:
- Если ваш сайт использует SSL, убедитесь, что в "Viewer Protocol Policy" вы выбрали вариант "Redirect HTTP to HTTPS" или "HTTPS Only".
Шаг 3: Настройка Route 53
Ваши записи DNS должны быть настроены так, чтобы указывать на CloudFront, а не на ваш EC2-инстанс напрямую. Ваша настройка Route 53 должна выглядеть следующим образом:
- A Record для example.com: Укажите тип записи как Alias и направьте его на ваш CloudFront Distribution.
- A Record для www.example.com: Вам также следует настроить эту запись, чтобы она указывала на CloudFront.
Шаг 4: Изменение заголовков (если необходимо)
Как вы упомянули, CloudFront по умолчанию передает заголовок Host с значением вашего публичного DNS EC2. Если ваш сервер требует, чтобы запросы содержали ваш домен (example.com) в заголовке Host, вам нужно будет настроить это в "Cache Behavior", добавив заголовок Host в список разрешенных заголовков.
Шаг 5: Тестирование настройки
После завершения всех настройок вам следует выполнить следующие действия для проверки работоспособности:
- Пингуйте ваш домен (example.com) с разных геолокаций, чтобы убедиться, что запросы обрабатываются через CloudFront.
- Используйте команду
dig example.com
, чтобы убедиться, что возвращаются IP-адреса CloudFront. - Проверяйте HTTP-ответы на наличие заголовков от CloudFront, таких как
X-Amz-Cf-Id
,X-Cache
иVia
. Это указывает на то, что запросы действительно обслуживаются через CloudFront.
Заключение
Процесс интеграции CloudFront с EC2 может показаться сложным, но следуя данным шагам, вы сможете настроить CDN эффективно. Это не только улучшит скорость загрузки ваших ресурсов, но и обеспечит надежность работы вашего сайта. Ваш выбор о том, использовать публичное DNS-имя EC2 или свой домен в настройках, зависит от специфики ваших требований к заголовкам HTTP и настройке DNS.