Настройка хостинга статического сайта в бакете Yandex Object Storage с доступом через Yandex Cloud CDN
В этом руководстве вы создадите статический сайт в бакете Yandex Object Storage и опубликуете его в качестве источника контента в Yandex Cloud CDN. Соединение между клиентом и CDN-сервером может осуществляться по протоколу TLS версий 1.0 и 1.1, а между CDN-сервером и Object Storage — по протоколу TLS версии 1.2 или выше. Сайт будет доступен по доменному имени, делегированному в Yandex Cloud DNS, для которого в Yandex Certificate Manager будет выпущен TLS-сертификат. Доменное имя сайта будет связано с CDN-ресурсом с помощью CNAME записи в DNS.
В качестве примера будет использовано доменное имя cdn.yandexcloud.example.
Чтобы настроить хостинг статического сайта в бакете с доступом через CDN:
- Подготовьте облако к работе.
- Добавьте сертификат в Certificate Manager.
- Создайте бакет в Object Storage и загрузите файлы сайта.
- Настройте хостинг статического сайта.
- Создайте CDN-ресурс.
- Настройте DNS для CDN-ресурса.
- Проверьте работу CDN.
Если созданные ресурсы вам больше не нужны, удалите их.
Перед началом работы
Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:
- Перейдите в консоль управления
, затем войдите в Yandex Cloud или зарегистрируйтесь. - На странице Yandex Cloud Billing
убедитесь, что у вас подключен платежный аккаунт, и он находится в статусеACTIVEилиTRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.
Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака
Подробнее об облаках и каталогах.
Необходимые платные ресурсы
В стоимость поддержки инфраструктуры для сайта в бакете с доступом через CDN входят:
- плата за исходящий трафик с CDN-серверов (см. тарифы Cloud CDN).
- плата за хранение данных в Object Storage, операции с ними и исходящий трафик (см. тарифы Object Storage).
- плата за публичные DNS-запросы и DNS-зоны, если вы используете Yandex Cloud DNS (см. тарифы Cloud DNS).
Добавьте сертификат в Certificate Manager
Поддерживаются сертификаты из Yandex Certificate Manager. Вы можете выпустить новый сертификат Let's Encrypt® или загрузить собственный.
Сертификат должен находиться в том же каталоге, в котором расположен ваш CDN-ресурс.
Для сертификата Let's Encrypt® пройдите проверку прав на домен, который указан в сертификате.
Создайте бакет в Object Storage и загрузите файлы сайта
-
В консоли управления
выберите сервис Object Storage. -
Справа сверху нажмите кнопку Создать бакет.
-
В поле Имя укажите имя бакета.
-
Нажмите кнопку Создать бакет.
-
На локальном компьютере создайте файл главной страницы сайта —
index.html.Пример файла index.html
<!DOCTYPE html> <html> <head> <title>My site</title> </head> <body> <p>The site is working</p> </body> </html> -
На странице созданного ранее бакета нажмите кнопку
Загрузить и выберите файлindex.html.
Настройте хостинг статического сайта
- В консоли управления
в списке сервисов выберите Object Storage и перейдите в бакет, для которого хотите настроить хостинг. - На панели слева выберите
Настройки. - Перейдите на вкладку Основные.
- В полях Доступ на чтение объектов и Доступ к списку объектов выберите
Публичный. - Нажмите Сохранить.
- Выберите вкладку Веб-сайт.
- В разделе Хостинг:
-
В поле Главная страница укажите абсолютный путь к файлу в бакете для главной страницы сайта, например
index.html.Важно
Ключ объекта с главной страницей сайта не может содержать символ
/. -
(опционально) В поле Страница ошибки укажите абсолютный путь к файлу в бакете, который будет отображаться при ошибках 4xx, например
pages/error404.html. По умолчанию Object Storage возвращает собственную страницу.
-
- Нажмите кнопку Сохранить.
Проверить хостинг можно, перейдя по ссылке в поле Ссылка.
Создайте CDN-ресурс
- В консоли управления
выберите Cloud CDN. - Нажмите кнопку Создать ресурс.
- Задайте основные настройки CDN-ресурса:
-
В блоке Контент:
-
Включите Доступ к контенту.
-
В поле Запрос контента выберите
Из одного источника. -
В поле Тип источника выберите
Бакет. -
В поле Бакет выберите нужный бакет из списка.
-
В поле Протокол для источников выберите
HTTP. -
В поле Доменное имя укажите
cdn.yandexcloud.example.Внимание
Доменное имя
cdn.yandexcloud.exampleстанет основным, и его будет невозможно изменить после создания CDN-ресурса.
-
-
В блоке Дополнительно:
- В поле Переадресация клиентов выберите
С HTTP на HTTPS. - В поле Тип сертификата укажите
Сертификат из Certificate Managerи выберите сертификат для доменного имениcdn.yandexcloud.example. - В поле Заголовок Host выберите
Свое значениеи в Значение заголовка укажите доменное имя источника в формате:<имя_бакета_с_файлами>.website.yandexcloud.net, чтобы бакет-источник корректно отвечал на запросы CDN-серверов.
- В поле Переадресация клиентов выберите
-
- Нажмите Продолжить.
- В разделах Кеширование, HTTP-заголовки и методы и Дополнительно оставьте настройки по умолчанию и нажмите Продолжить.
Настройте DNS для CDN-ресурса
Доменное имя cdn.yandexcloud.example должно быть связано с CDN-ресурсом с помощью записей DNS.
Чтобы настроить DNS:
-
Получите доменное имя провайдера Cloud CDN:
Консоль управления- В консоли управления
выберите Cloud CDN. - В списке CDN-ресурсов выберите ресурс с основным доменным именем
cdn.yandexcloud.example. - Из блока Настройки DNS внизу страницы скопируйте доменное имя вида
328938ed********.a.yccdn.cloud.yandex.netилиcl-msa87*****.edgecdn.ruв зависимости от используемого провайдера CDN.
- В консоли управления
-
На сайте компании, которая предоставляет вам услуги DNS-хостинга, перейдите в настройки DNS.
-
Создайте или измените CNAME-запись для
cdn.yandexcloud.exampleтак, чтобы она указывала на скопированное доменное имя:cdn CNAME 328938ed********.a.yccdn.cloud.yandex.netПримечание
Не используйте ресурсную запись ANAME с доменными именами для раздачи контента, поскольку в таком случае конечный пользователь получит ответ от CDN-сервера, не связанного с геолокацией пользователя. Ответ всегда будет одинаков для всех пользователей.
Если вы пользуетесь Cloud DNS, настройте запись по следующей инструкции:
Инструкция по настройке DNS-записей для Cloud DNS
Консоль управления-
В консоли управления
выберите сервис Cloud DNS. -
Если у вас нет публичной зоны DNS, создайте ее:
- Нажмите кнопку Создать зону.
- В поле Зона укажите доменное имя сайта с точкой в конце:
yandexcloud.example.. - В поле Тип выберите
Публичная. - В поле Имя укажите
example-dns-zone. - Нажмите кнопку Создать.
-
Создайте в зоне CNAME-запись для
cdn.yandexcloud.example:- Выберите зону
example-dns-zone. - Нажмите кнопку Создать запись.
- В поле Имя укажите
cdn. - В поле Тип укажите
CNAME. - В поле Значение вставьте скопированное значение вида
328938ed********.a.yccdn.cloud.yandex.net.илиcl-msa87*****.edgecdn.ru.(в зависимости от используемого провайдера CDN) с точкой на конце. - Нажмите кнопку Создать.
- Выберите зону
-
Проверьте работу CDN
Проверьте доступность сайта:
-
Дождитесь обновления DNS-записей (на это может потребоваться несколько часов) и предзагрузки файлов на CDN-серверы.
-
Откройте сайт по новому URL:
https://cdn.example.com
Как удалить созданные ресурсы
Чтобы остановить работу инфраструктуры и перестать платить за созданные ресурсы: