Поддержка нескольких доменных имен с помощью консоли управления, CLI или API
Чтобы создать инфраструктуру для поддержки нескольких доменных имен сайта с помощью консоли управления Yandex Cloud, CLI или API:
- Создайте бакеты.
- Настройте статический сайт для основного домена.
- Настройте переадресацию для дополнительного домена.
- Проверьте работу нескольких доменов.
Создайте бакеты
Создайте бакеты и назовите их в соответствии с доменными именами, например example.com и example2.com.
-
Создайте бакет для основного доменного имени
example.com:Консоль управленияYandex Cloud CLIAPI-
В консоли управления
выберите каталог, в котором хотите создать бакет. -
Перейдите в сервис Object Storage.
-
На панели сверху нажмите Создать бакет.
-
На странице создания бакета:
-
Введите имя бакета в соответствии с основным доменным именем сайта, например
example.com.Примечание
Имена бакетов должны совпадать с доменными именами.
-
Задайте максимальный размер бакета.
-
Включите
Для всех— доступ для любых пользователей. -
Выберите класс хранилища по умолчанию —
Стандартное. -
Нажмите Создать бакет для завершения операции.
-
Если у вас еще нет интерфейса командной строки Yandex Cloud (CLI), установите и инициализируйте его.
По умолчанию используется каталог, указанный при создании профиля CLI. Чтобы изменить каталог по умолчанию, используйте команду
yc config set folder-id <идентификатор_каталога>. Также для любой команды вы можете указать другой каталог с помощью параметров--folder-nameили--folder-id.-
Посмотрите описание команды CLI для создания бакета:
yc storage bucket create --help -
Создайте бакет в каталоге по умолчанию:
yc storage bucket create --name <имя_бакета> \ --public-read \ --public-listГде
-
--name— имя бакета в соответствии с основным доменным именем сайта, напримерexample.com.Примечание
Имена бакетов должны совпадать с доменными именами.
-
--public-read— включить публичный доступ на чтение объектов в бакете. -
--public-list— включить публичный доступ на просмотр списка объектов в бакете.
Результат:
name: example.com folder_id: b1geoelk7fld******** anonymous_access_flags: read: true list: true default_storage_class: STANDARD versioning: VERSIONING_DISABLED created_at: "2025-08-08T09:12:45.743187Z" resource_id: e3etgi7l43gs******** -
Чтобы создать бакет, воспользуйтесь методом REST API create для ресурса Bucket, вызовом gRPC API BucketService/Create или методом S3 API create.
-
-
Создайте бакет для дополнительного доменного имени
example2.com, повторив шаги выше.
Настройте статический сайт для основного домена
Настройте статический сайт для бакета и свяжите его с основным доменным именем example.com:
-
Настройте бакет
example.comв качестве хостинга статического сайта.Консоль управленияYandex Cloud CLIAPI- В консоли управления
выберите каталог. - Перейдите в сервис Object Storage.
- Выберите бакет, для которого хотите настроить хостинг.
- На панели слева выберите
Настройки. - Выберите вкладку Веб-сайт.
- В разделе Хостинг:
-
В поле Главная страница укажите абсолютный путь к файлу в бакете для главной страницы сайта, например
index.html.Важно
Ключ объекта с главной страницей сайта не может содержать символ
/. -
(опционально) В поле Страница ошибки укажите абсолютный путь к файлу в бакете, который будет отображаться при ошибках 4xx, например
pages/error404.html. По умолчанию Object Storage возвращает собственную страницу.
-
- Нажмите кнопку Сохранить.
Проверить хостинг можно, перейдя по ссылке в поле Ссылка.
-
Посмотрите описание команды CLI для настройки хостинга статического сайта в бакете:
yc storage bucket update --help -
Создайте файл с настройками хостинга в формате JSON. Например:
{ "index": "index.html", "error": "error404.html" }Где:
-
index— абсолютный путь к файлу главной страницы сайта.Важно
Ключ объекта с главной страницей сайта не может содержать символ
/. -
error— абсолютный путь к файлу, который будет отображаться пользователю при ошибках 4xx.
-
-
Выполните следующую команду:
yc storage bucket update --name <имя_бакета> \ --website-settings-from-file <путь_к_файлу>Где:
--name— имя бакета.--website-settings-from-file— путь к файлу с настройками хостинга.
Результат:
name: my-bucket folder_id: b1gjs8dck8bv******** default_storage_class: STANDARD versioning: VERSIONING_SUSPENDED max_size: "10737418240" acl: {} created_at: "2022-12-14T08:42:16.273717Z"
Чтобы убедиться, что настройки хостинга появились в описании бакета, выполните команду:
yc storage --name <имя_бакета> bucket get --fullРезультат:
website_settings: index: index.html error: error404.html redirect_all_requests: {}Чтобы настроить хостинг статического сайта, воспользуйтесь методом REST API update для ресурса Bucket, вызовом gRPC API BucketService/Update или методом S3 API upload.
- В консоли управления
-
Свяжите доменное имя
example.comи соответствующий бакет.-
Создайте на DNS-сервере публичную зону DNS и ресурсную запись, которая связывает ваше доменное имя и бакет:
Yandex Cloud DNSВнешний DNS-серверВажно
Использование сервиса Cloud DNS тарифицируется, подробнее см. Правила тарификации для Cloud DNS.
-
В консоли управления
выберите каталог. -
Перейдите в сервис Object Storage.
-
Выберите бакет, для которого хотите использовать собственный домен.
-
На панели слева выберите
Настройки и перейдите на вкладку Веб-сайт. -
В разделе Хостинг в блоке Домены в Cloud DNS нажмите кнопку Создать запись.
Примечание
В блоке Домены в Cloud DNS раздела Хостинг отображаются только те домены, которые были созданы непосредственно в этом интерфейсе. Если запись была создана в сервисе Cloud DNS, то в этом блоке она отображаться не будет.
-
В открывшемся окне нажмите кнопку Создать зону и выберите доменную зону, которая соответствует имени бакета, например
example.com. Нажмите кнопку Создать. -
Раскройте блок Дополнительные настройки.
-
В поле TTL (в секундах) укажите время жизни ресурсной записи или выберите из предложенных.
-
Нажмите кнопку Создать.
-
Нажмите кнопку Сохранить.
Чтобы получить доступ к именам из публичной зоны, делегируйте домен. Для этого в личном кабинете вашего доменного регистратора укажите адреса серверов
ns1.yandexcloud.kzиns2.yandexcloud.kz.Делегирование домена и обновление ресурсных записей могут занять некоторое время.
Вы также можете создать зону DNS и ресурсную запись средствами Cloud DNS.
Пример параметров зоны DNS и ресурсной записи
Параметры зоны DNS:
- Зона —
example.com.. - Тип —
публичная.
Параметры ресурсной записи:
Имя Тип TTL Значение example.com. ANAME 600 example.com.website.yandexcloud.kz Записи ANAME позволяют использовать для хостинга домены второго уровня и, в отличие от CNAME, не ограничивают использование других типов записей в одной с ними зоне.
Пример параметров зоны DNS:
- Зона —
example.com.. - Тип —
публичная.
Пример ресурсной записи CNAME:
example.com CNAME example.com.website.yandexcloud.kzЧтобы использовать ресурсную запись CNAME, ваше доменное имя должно быть в домене не ниже третьего уровня — это связано с особенностями обработки CNAME-записей на DNS-хостингах. Подробнее см. п. 2.4 RFC 1912
.Обновление ресурсных записей может занять некоторое время.
В результате статический сайт будет доступен по адресу
example.com. -
-
-
Настройте HTTPS: привяжите к бакету сертификат из Certificate Manager или загрузите свой.
Примечание
Вы можете использовать один сертификат для основного и дополнительного домена или несколько сертификатов для каждого домена.
Переадресация запросов с HTTP на HTTPS включается автоматически после настройки доступа к бакету по HTTPS. Дополнительных настроек для такой переадресации не требуется.
В результате статический сайт будет доступен по адресу example.com по протоколу HTTPS.
Настройте переадресацию для дополнительного домена
Для бакета с дополнительным доменным именем example2.com:
-
Настройте в бакете
example2.comпереадресацию всех запросов на основной доменexample.comи протокол HTTPS.Консоль управленияYandex Cloud CLIAPI- В консоли управления
выберите каталог. - Перейдите в сервис Object Storage.
- Выберите бакет, для которого хотите настроить переадресацию всех запросов.
- На панели слева выберите
Настройки. - Выберите вкладку Веб-сайт.
- В разделе Переадресация укажите:
- Доменное имя — доменное имя, на которое будут переадресованы все запросы, например
example.com. - Протокол — HTTPS.
- Доменное имя — доменное имя, на которое будут переадресованы все запросы, например
- Нажмите кнопку Сохранить.
-
Посмотрите описание команды CLI для настройки переадресации всех запросов:
yc storage bucket update --help -
Создайте файл с настройками переадресации в формате JSON. Например:
{ "redirectAllRequests": { "protocol": "PROTOCOL_HTTPS", "hostname": "example.com" } }Где:
protocol— протокол передачи данных.hostname— доменное имя хоста, на который будут перенаправляться все запросы к текущему бакету.
-
Выполните следующую команду:
yc storage bucket update --name <имя_бакета> \ --website-settings-from-file <путь_к_файлу>Где:
--name— имя бакета.--website-settings-from-file— путь к файлу с настройками переадресации.
Результат:
name: example2.com folder_id: b1gjs8dck8bv******** default_storage_class: STANDARD versioning: VERSIONING_SUSPENDED max_size: "10737418240" acl: {} created_at: "2022-12-14T08:42:16.273717Z"
Чтобы настроить переадресацию всех запросов к бакету, воспользуйтесь методом REST API update для ресурса Bucket, вызовом gRPC API BucketService/Update или методом S3 API upload.
- В консоли управления
-
Настройте HTTPS: привяжите к бакету сертификат из Certificate Manager или загрузите свой.
Переадресация запросов с HTTP на HTTPS включается автоматически после настройки доступа к бакету по HTTPS. Дополнительных настроек для такой переадресации не требуется.
-
Свяжите доменное имя
example2.comи соответствующий бакет.
Проверьте работу нескольких доменов
Дождитесь выпуска TLS-сертификата и его перехода в статус Issued. После этого убедитесь, что переадресация работает: откройте сайт https://example2.com, и вы будете переадресованы на https://example.com.