Yandex Cloud
Поиск
Связаться с намиПодключиться
  • Истории успеха
  • Документация
  • Блог
  • Все сервисы
  • Статус работы сервисов
    • Доступны в регионе
    • Инфраструктура и сеть
    • Платформа данных
    • Контейнеры
    • Инструменты разработчика
    • Бессерверные вычисления
    • Безопасность
    • Мониторинг и управление ресурсами
    • ИИ для бизнеса
    • Бизнес-инструменты
  • Все решения
    • По отраслям
    • По типу задач
    • Экономика платформы
    • Безопасность
    • Техническая поддержка
    • Каталог партнёров
    • Обучение и сертификация
    • Облако для стартапов
    • Облако для крупного бизнеса
    • Центр технологий для общества
    • Партнёрская программа
    • Поддержка IT-бизнеса
    • Облако для фрилансеров
    • Обучение и сертификация
    • Блог
    • Документация
    • Мероприятия и вебинары
    • Контакты, чаты и сообщества
    • Идеи
    • Тарифы Yandex Cloud
    • Промоакции и free tier
    • Правила тарификации
  • Истории успеха
  • Документация
  • Блог
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»
Yandex Object Storage
    • Все инструкции
      • Настройка хостинга
      • Поддержка собственного домена
        • Обзор
        • Консоль управления, CLI и API
        • Terraform
      • Настройка HTTPS
  • Правила тарификации
  • Справочник Terraform
  • Метрики Monitoring
  • Аудитные логи Audit Trails
  • Логи бакета
  • История изменений
  • Вопросы и ответы
  • Обучающие курсы

В этой статье:

  • Делегируйте доменное имя
  • Создайте инфраструктуру
  • Проверьте работу нескольких доменов
  1. Пошаговые инструкции
  2. Хостинг статических сайтов
  3. Поддержка нескольких доменных имен
  4. Terraform

Поддержка нескольких доменных имен с помощью Terraform

Статья создана
Yandex Cloud
Улучшена
kvendingoldo
Обновлена 7 ноября 2025 г.
  • Делегируйте доменное имя
  • Создайте инфраструктуру
  • Проверьте работу нескольких доменов

Чтобы создать инфраструктуру для поддержки нескольких доменных имен сайта с помощью Terraform:

  1. Делегируйте доменное имя.
  2. Создайте инфраструктуру.
  3. Проверьте работу нескольких доменов.

Делегируйте доменное имяДелегируйте доменное имя

Вы можете воспользоваться сервисом Yandex Cloud DNS для управления доменом.

Чтобы делегировать домен сервису Cloud DNS, в личном кабинете вашего регистратора домена укажите в настройках домена адреса DNS-серверов:

  • ns1.yandexcloud.kz
  • ns2.yandexcloud.kz

Делегирование происходит не сразу. Серверы интернет-провайдеров обычно обновляют записи в течение 24 часов (86400 секунд). Это обусловлено значением TTL, в течение которого кешируются записи для доменов.

Проверить делегирование домена можно с помощью сервиса Whois или утилиты dig:

dig +short NS example.com

Результат:

ns2.yandexcloud.kz.
ns1.yandexcloud.kz.

Создайте инфраструктуруСоздайте инфраструктуру

Terraform позволяет быстро создать облачную инфраструктуру в Yandex Cloud и управлять ею с помощью файлов конфигураций. В файлах конфигураций хранится описание инфраструктуры на языке HCL (HashiCorp Configuration Language). При изменении файлов конфигураций Terraform автоматически определяет, какая часть вашей конфигурации уже развернута, что следует добавить или удалить.

Terraform распространяется под лицензией Business Source License, а провайдер Yandex Cloud для Terraform — под лицензией MPL-2.0.

Подробную информацию о ресурсах провайдера смотрите в документации на сайте Terraform или в зеркале.

Для создания инфраструктуры с помощью Terraform:

  1. Установите Terraform, получите данные для аутентификации и укажите источник для установки провайдера Yandex Cloud (раздел Настройте провайдер, шаг 1).

  2. Подготовьте файлы с описанием инфраструктуры:

    Готовая конфигурация
    Вручную
    1. Клонируйте репозиторий с конфигурационными файлами.

      git clone https://github.com/yandex-cloud-examples/yc-s3-static-website-multiple-domain.git
      
    2. Перейдите в директорию с репозиторием. В ней должны появиться файлы:

      • index.html — файл главной страницы сайта.
      • website-multiple-domain.tf — конфигурация создаваемой инфраструктуры.
      • website-multiple-domain.auto.tfvars — файл с пользовательскими данными.
    1. Создайте папку для конфигурационных файлов.

    2. Создайте в папке:

      1. Конфигурационный файл website-multiple-domain.tf:

        website-multiple-domain.tf
        # Объявление переменных для конфиденциальных параметров
        
        variable "main_domain" {
          type = string
        }
        
        variable "extra_domain" {
          type = string
        }
        
        variable "folder_id" {
          type = string
        }
        
        locals {
          test = [ yandex_dns_zone.zone1.id, yandex_dns_zone.zone2.id]
        }
        
        # Настройка провайдера
        
        terraform {
          required_providers {
            yandex = {
              source = "yandex-cloud/yandex"
            }
          }
          required_version = ">=0.136.0"
        }
        
        # Создание бакетов
        
        resource "yandex_storage_bucket" "main-bucket" {
          bucket    = var.main_domain
          folder_id = var.folder_id
          anonymous_access_flags {
            read        = true
            list        = true
            config_read = false
          }
          website {
            index_document = "index.html"
            error_document = "error.html"
          }
        
          https {
            certificate_id = data.yandex_cm_certificate.example_by_id.id
          }
        
          depends_on = [data.yandex_cm_certificate.example_by_id]
        }
        
        resource "yandex_storage_bucket" "extra-bucket" {
          bucket    = var.extra_domain
          folder_id = var.folder_id
          anonymous_access_flags {
            read        = true
            list        = true
            config_read = false
          }
          website {
            redirect_all_requests_to = "https://${var.main_domain}"
          }
        
          https {
            certificate_id = data.yandex_cm_certificate.example_by_id.id
          }
        
          depends_on = [data.yandex_cm_certificate.example_by_id]
        }
        
        # Загрузка главной страницы в бакет
        
        resource "yandex_storage_object" "index-page" {
          bucket     = yandex_storage_bucket.main-bucket.id
          key        = "index.html"
          source     = "index.html"
        }
        
        # Создание DNS зон и ресурсных записей
        
        resource "yandex_dns_zone" "zone1" {
          name    = "main-domain-zone"
          zone    = "${var.main_domain}."
          public  = true
        }
        
        resource "yandex_dns_recordset" "rs1" {
          zone_id = yandex_dns_zone.zone1.id
          name    = "@"
          type    = "CNAME"
          ttl     = 600
          data    = ["${var.main_domain}.website.yandexcloud.kz"]
        }
        
        resource "yandex_dns_zone" "zone2" {
          name    = "extra-domain-zone"
          zone    = "${var.extra_domain}."
          public  = true
        }
        
        resource "yandex_dns_recordset" "rs2" {
          zone_id = yandex_dns_zone.zone2.id
          name    = "@"
          type    = "CNAME"
          ttl     = 600
          data    = ["${var.extra_domain}.website.yandexcloud.kz"]
        }
        
        
        # Создание TLS-сертификата Let's Encrypt
        
        resource "yandex_cm_certificate" "example" {
          name    = "multidomains-cert"
          domains = ["${var.main_domain}", "${var.extra_domain}"]
        
          managed {
            challenge_type  = "DNS_CNAME"
            challenge_count = 2 # for each domain
          }
        }
        
        resource "yandex_dns_recordset" "example" {
          count   = yandex_cm_certificate.example.managed[0].challenge_count
          zone_id = element(local.test, count.index - 1)
          name    = yandex_cm_certificate.example.challenges[count.index].dns_name
          type    = yandex_cm_certificate.example.challenges[count.index].dns_type
          data    = [yandex_cm_certificate.example.challenges[count.index].dns_value]
          ttl     = 600
        }
        
        data "yandex_cm_certificate" "example_by_id" {
          depends_on     = [yandex_dns_recordset.example]
          certificate_id = yandex_cm_certificate.example.id
        }
        
      2. Файл с пользовательскими данными website-multiple-domain.auto.tfvars:

        website-multiple-domain.auto.tfvars
        folder_id    = "<идентификатор_каталога>"
        main_domain  = "<основной_домен>"
        extra_domain = "<дополнительный_домен>"
        
      3. Файл главной страницы сайта index.html:

        index.html
        <!DOCTYPE html>
        <html>
          <head>
            <title>My site</title>
          </head>
          <body>
            <h1>This is my site!</h1>
          </body>
        </html>
        

    Более подробную информацию о параметрах используемых ресурсов в Terraform см. в документации провайдера:

    • Бакет — yandex_storage_bucket.
    • Объект — yandex_storage_object.
    • DNS-зона — yandex_dns_zone.
    • Ресурсная запись DNS — yandex_dns_recordset.
    • TLS-сертификат — yandex_cm_certificate.
  3. В файле website-multiple-domain.auto.tfvars задайте пользовательские параметры:

    • folder_id — идентификатор каталога.
    • main_domain — основной домен, например example.com.
    • extra_domain — дополнительный домен, например example2.com.
  4. Создайте ресурсы:

    1. В терминале перейдите в папку, где вы отредактировали конфигурационный файл.

    2. Проверьте корректность конфигурационного файла с помощью команды:

      terraform validate
      

      Если конфигурация является корректной, появится сообщение:

      Success! The configuration is valid.
      
    3. Выполните команду:

      terraform plan
      

      В терминале будет выведен список ресурсов с параметрами. На этом этапе изменения не будут внесены. Если в конфигурации есть ошибки, Terraform на них укажет.

    4. Примените изменения конфигурации:

      terraform apply
      
    5. Подтвердите изменения: введите в терминале слово yes и нажмите Enter.

Проверьте работу нескольких доменовПроверьте работу нескольких доменов

Дождитесь выпуска TLS-сертификата и его перехода в статус Issued. После этого убедитесь, что переадресация работает: откройте сайт https://example2.com, и вы будете переадресованы на https://example.com.

Была ли статья полезна?

Предыдущая
Консоль управления, CLI и API
Следующая
Настройка HTTPS
Проект Яндекса
© 2025 ТОО «Облачные Сервисы Казахстан»