Настройка хостинга статического сайта в бакете 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-провайдер еще не активирован, нажмите кнопку Подключиться к провайдеру. Подключение произойдет автоматически.
Если кнопки Подключиться к провайдеру нет, и вам доступно создание ресурсов и групп источников, значит, провайдер уже активирован. Переходите к следующему шагу.
-
Создайте CDN-ресурс:
-
Справа сверху нажмите кнопку Создать ресурс.
-
Включите Доступ к контенту.
-
Задайте основные параметры CDN-ресурса:
-
Запрос контента —
Из одного источника
. -
Тип источника —
Бакет
. -
Бакет — выберите нужный бакет из списка.
-
Доменное имя —
cdn.yandexcloud.example
.Внимание
Доменное имя
cdn.yandexcloud.example
станет основным, и его будет невозможно изменить после создания CDN-ресурса. -
В блоке Дополнительно:
- В поле Протокол для источников выберите
HTTP
. - В поле Переадресация клиентов выберите
Не использовать
. - В поле Тип сертификата укажите
Сертификат из Certificate Manager
и выберите сертификат для доменного имениcdn.yandexcloud.example
. - В поле Заголовок Host выберите
Свое значение
и в Значение заголовка укажите доменное имя источника в формате:<имя_бакета_с_файлами>.website.yandexcloud.net
, чтобы бакет-источник корректно отвечал на запросы CDN-серверов.
- В поле Протокол для источников выберите
-
-
Нажмите кнопку Создать.
-
-
Включите переадресацию клиентов с HTTP на HTTPS:
- Выберите ресурс CDN, созданный ранее.
- Убедитесь, что в блоке Дополнительно статус сертификата изменился на
Выпущен
. - Справа сверху нажмите кнопку
Редактировать. - В блоке Дополнительно в поле Переадресация клиентов выберите
С HTTP на HTTPS
. - Нажмите кнопку Сохранить.
Настройте DNS для CDN-ресурса
Доменное имя cdn.yandexcloud.example
должно быть связано с CDN-ресурсом с помощью записей DNS.
Чтобы настроить DNS:
-
Получите доменное имя провайдера Cloud CDN:
Консоль управления- В консоли управления
выберите Cloud CDN. - В списке CDN-ресурсов выберите ресурс с основным доменным именем
cdn.yandexcloud.example
. - Из блока Настройки DNS внизу страницы скопируйте доменное имя вида
cl-********.edgecdn.ru
.
- В консоли управления
-
На сайте компании, которая предоставляет вам услуги DNS-хостинга, перейдите в настройки DNS.
-
Создайте или измените CNAME-запись для
cdn.yandexcloud.example
так, чтобы она указывала на скопированное доменное имя:cdn CNAME cl-********.edgecdn.ru
Примечание
Не используйте ресурсную запись ANAME с доменными именами для раздачи контента, поскольку в таком случае конечный пользователь получит ответ от CDN-сервера, не связанного с геолокацией пользователя. Ответ всегда будет одинаков для всех пользователей.
Если вы пользуетесь Cloud DNS, настройте запись по следующей инструкции:
Инструкция по настройке DNS-записей для Cloud DNS
Консоль управления-
В консоли управления
выберите сервис Cloud DNS. -
Если у вас нет публичной зоны DNS, создайте ее:
- Нажмите кнопку Создать зону.
- В поле Зона укажите доменное имя сайта с точкой в конце:
yandexcloud.example.
. - В поле Тип выберите
Публичная
. - В поле Имя укажите
example-dns-zone
. - Нажмите кнопку Создать.
-
Создайте в зоне CNAME-запись для
cdn.yandexcloud.example
:- Выберите зону
example-dns-zone
. - Нажмите кнопку Создать запись.
- В поле Имя укажите
cdn
. - В поле Тип укажите
CNAME
. - В поле Значение вставьте скопированное значение вида
cl-********.edgecdn.ru.
с точкой на конце. - Нажмите кнопку Создать.
- Выберите зону
-
Проверьте работу CDN
Проверьте доступность сайта:
-
Дождитесь обновления DNS-записей (на это может потребоваться несколько часов) и предзагрузки файлов на CDN-серверы.
-
Откройте сайт по новому URL:
https://cdn.example.com
Как удалить созданные ресурсы
Чтобы остановить работу инфраструктуры и перестать платить за созданные ресурсы: