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

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

  • Подготовьте облако к работе
  • Необходимые платные ресурсы
  • Создайте облачную сеть
  • Зарезервируйте статический публичный IP-адрес
  • Создайте группы безопасности
  • Импортируйте TLS-сертификаты сайтов в Certificate Manager
  • Создайте группы ВМ для сайтов
  • Загрузите файлы сайтов на ВМ
  • Создайте группы бэкендов
  • Создайте и настройте HTTP-роутеры
  • Создайте HTTP-роутеры для сайтов
  • Создайте HTTP-роутер «по умолчанию»
  • Создайте L7-балансировщик
  • Настройте DNS для сайтов
  • Проверьте работу хостинга
  • Удалите созданные ресурсы
  1. Практические руководства
  2. Организация виртуального хостинга

Организация виртуального хостинга

Статья создана
Yandex Cloud
Обновлена 6 марта 2025 г.
  • Подготовьте облако к работе
    • Необходимые платные ресурсы
  • Создайте облачную сеть
  • Зарезервируйте статический публичный IP-адрес
  • Создайте группы безопасности
  • Импортируйте TLS-сертификаты сайтов в Certificate Manager
  • Создайте группы ВМ для сайтов
  • Загрузите файлы сайтов на ВМ
  • Создайте группы бэкендов
  • Создайте и настройте HTTP-роутеры
    • Создайте HTTP-роутеры для сайтов
    • Создайте HTTP-роутер «по умолчанию»
  • Создайте L7-балансировщик
  • Настройте DNS для сайтов
  • Проверьте работу хостинга
  • Удалите созданные ресурсы

Сценарий описывает организацию виртуального хостинга — размещение нескольких сайтов с разными доменными именами по одному IP-адресу — с помощью Yandex Application Load Balancer.

В качестве примеров в сценарии будут использоваться три доменных имени: site-a.com, site-b.com и default.com.

Чтобы создать виртуальный хостинг:

  1. Подготовьте облако к работе.
  2. Создайте облачную сеть.
  3. Зарезервируйте статический публичный IP-адрес.
  4. Создайте группы безопасности.
  5. Импортируйте TLS-сертификаты сайтов в Yandex Certificate Manager.
  6. Создайте группы виртуальных машин для сайтов.
  7. Загрузите файлы сайтов на ВМ.
  8. Создайте группы бэкендов.
  9. Создайте и настройте HTTP-роутеры.
  10. Создайте L7-балансировщик.
  11. Настройте DNS для сайтов.
  12. Проверьте работу хостинга.

Если созданные ресурсы вам больше не нужны, удалите их.

Подготовьте облако к работе

Зарегистрируйтесь в Yandex Cloud и создайте платежный аккаунт:

  1. Перейдите в консоль управления, затем войдите в Yandex Cloud или зарегистрируйтесь.
  2. На странице Yandex Cloud Billing убедитесь, что у вас подключен платежный аккаунт, и он находится в статусе ACTIVE или TRIAL_ACTIVE. Если платежного аккаунта нет, создайте его и привяжите к нему облако.

Если у вас есть активный платежный аккаунт, вы можете создать или выбрать каталог, в котором будет работать ваша инфраструктура, на странице облака.

Подробнее об облаках и каталогах.

Необходимые платные ресурсы

В стоимость поддержки виртуального хостинга входят:

  • Плата за постоянно запущенные ВМ (см. тарифы Yandex Compute Cloud).
  • Плата за использование публичного статического IP-адреса (см. тарифы Yandex Virtual Private Cloud).
  • Плата за использование вычислительных ресурсов L7-балансировщика (см. тарифы Application Load Balancer).
  • Плата за публичные DNS-запросы и зоны DNS, если вы используете Yandex Cloud DNS (см. тарифы Cloud DNS).

Создайте облачную сеть

Все ресурсы, созданные в сценарии, будут относиться к одной облачной сети.

Чтобы создать сеть:

Консоль управления
  1. В консоли управления выберите сервис Virtual Private Cloud.
  2. Нажмите кнопку Создать сеть.
  3. Укажите Имя сети: vhosting-network.
  4. В поле Дополнительно выберите опцию Создать подсети.
  5. Нажмите кнопку Создать сеть.

Зарезервируйте статический публичный IP-адрес

Для работы виртуального хостинга потребуется статический публичный IP-адрес, который будет назначен L7-балансировщику.

Чтобы зарезервировать IP-адрес:

Консоль управления
  1. В консоли управления выберите сервис Virtual Private Cloud.
  2. На панели слева выберите IP-адреса. Нажмите кнопку Зарезервировать адрес.
  3. В открывшемся окне выберите зону доступности ru-central1-d. Нажмите кнопку Зарезервировать.

Создайте группы безопасности

Группы безопасности содержат правила, которые разрешают балансировщику получать входящий трафик и отправлять его на ВМ, а ВМ — получать этот трафик. В сценарии будут созданы две группы безопасности: для балансировщика и для всех ВМ.

Чтобы создать группы безопасности:

Консоль управления
  1. В консоли управления выберите сервис Virtual Private Cloud.

  2. На панели слева выберите Группы безопасности.

  3. Создайте группу безопасности для балансировщика:

    1. Нажмите кнопку Создать группу безопасности.

    2. Укажите Имя группы: vhosting-sg-balancer.

    3. Выберите Сеть vhosting-network.

    4. В блоке Правила создайте следующие правила по инструкции под таблицей:

      Направление
      трафика
      Описание Диапазон портов Протокол Источник /
      назначение
      CIDR блоки
      Исходящий any Весь Любой CIDR 0.0.0.0/0
      Входящий ext-http 80 TCP CIDR 0.0.0.0/0
      Входящий ext-https 443 TCP CIDR 0.0.0.0/0
      Входящий healthchecks 30080 TCP Проверки состояния балансировщика —
    5. Выберите вкладку Исходящий трафик или Входящий трафик.

    6. Нажмите кнопку Добавить правило.

    7. В открывшемся окне в поле Диапазон портов укажите один порт или диапазон портов, куда или откуда будет поступать трафик.

    8. В поле Протокол укажите нужный протокол или оставьте Любой, чтобы разрешить передачу трафика по всем протоколам.

    9. В поле Назначение или Источник выберите назначение правила:

      • CIDR — правило будет применено к диапазону IP-адресов. В поле CIDR блоки укажите CIDR и маски подсетей, в которые или из которых будет поступать трафик. Чтобы добавить несколько CIDR, нажимайте кнопку Добавить CIDR.
      • Группа безопасности — правило будет применено к ВМ из текущей группы или из выбранной группы безопасности.
      • Проверки состояния балансировщика — правило, которое позволяет балансировщику проверять состояние ВМ.
    10. Нажмите кнопку Сохранить. Таким образом создайте все правила из таблицы.

    11. Нажмите кнопку Сохранить.

  4. Аналогично создайте группу безопасности для ВМ с именем vhosting-sg-vms, той же сетью vhosting-network и следующими правилами:

    Направление
    трафика
    Описание Диапазон портов Протокол Источник CIDR блоки
    Входящий balancer 80 TCP Группа безопасности vhosting-sg-balancer
    Входящий ssh 22 TCP CIDR 0.0.0.0/0

Импортируйте TLS-сертификаты сайтов в Certificate Manager

Чтобы пользователи могли обращаться к сайтам по защищенному протоколу HTTPS (HTTP over TLS), для них должны быть выпущены TLS-сертификаты. Для использования в L7-балансировщике сертификаты нужно импортировать в Certificate Manager.

Если у ваших сайтов нет сертификатов, вы можете получить в Certificate Manager сертификаты от Let's Encrypt®. В этом случае дополнительных действий после создания сертификатов не требуется: они импортируются автоматически.

Чтобы импортировать уже имеющийся сертификат для сайта site-a.com:

Консоль управления
  1. В консоли управления выберите сервис Certificate Manager.
  2. Нажмите кнопку Добавить сертификат и выберите пункт Пользовательский сертификат.
  3. Укажите Имя сертификата: vhosting-cert-a.
  4. В поле Сертификат нажмите кнопку Добавить сертификат. Загрузите Файл с вашим сертификатом или укажите его Содержимое и нажмите кнопку Добавить.
  5. Если ваш сертификат выпущен сторонним центром сертификации, в поле Цепочка промежуточных сертификатов нажмите кнопку Добавить цепочку. Загрузите Файл с цепочкой сертификатов или укажите его Содержимое и нажмите кнопку Добавить.
  6. В поле Приватный ключ нажмите кнопку Добавить приватный ключ. Загрузите Файл с ключом или укажите его Содержимое и нажмите кнопку Добавить.
  7. Нажмите кнопку Создать.

Аналогично импортируйте сертификаты для сайтов site-b.com и default.com с именами vhosting-cert-b и vhosting-cert-default.

Создайте группы ВМ для сайтов

В качестве веб-серверов для двух сайтов будут выступать ВМ Compute Cloud — по одной группе из нескольких одинаковых ВМ на каждый сайт. В этом сценарии серверы будут реализованы на LEMP-стеке (Linux, nginx, MySQL®, PHP; подробнее см. в сценарии использования Сайт на LAMP- или LEMP-стеке).

Чтобы создать группу ВМ для сайта site-a.com:

Консоль управления
  1. В консоли управления выберите сервис Compute Cloud.

  2. На панели слева выберите Группы виртуальных машин. Нажмите кнопку Создать группу виртуальных машин.

  3. Укажите имя группы ВМ: vhosting-ig-a.

  4. В блоке Распределение выберите несколько зон доступности, чтобы обеспечить отказоустойчивость хостинга.

  5. В блоке Шаблон виртуальной машины нажмите кнопку Задать.

  6. В блоке Образ загрузочного диска откройте вкладку Marketplace и нажмите кнопку Показать все продукты Marketplace. Выберите продукт LEMP и нажмите кнопку Использовать.

  7. В блоке Вычислительные ресурсы:

    • Выберите платформу ВМ.
    • Укажите необходимое количество vCPU и объем RAM.

    Для функционального тестирования сайта хватит минимальной конфигурации:

    • Платформа — Intel Ice Lake.
    • Гарантированная доля vCPU — 20%.
    • vCPU — 2.
    • RAM — 1 ГБ.
  8. В блоке Сетевые настройки выберите Сеть vhosting-network, созданную ранее, и ее подсети.

  9. В поле Публичный адрес выберите Автоматически.

  10. Выберите группу безопасности vhosting-sg-vms, созданную ранее.

  11. Укажите данные для доступа на ВМ:

    • В поле Логин введите имя пользователя.

    • В поле SSH-ключ вставьте содержимое файла открытого ключа.

      Пару ключей для подключения по SSH необходимо создать самостоятельно, см. раздел о подключении к ВМ по SSH.

    Внимание

    IP-адрес и имя хоста (FQDN) для подключения к ВМ назначатся ей при создании. Если вы выбрали вариант Без адреса в поле Публичный адрес, вы не сможете обращаться к ВМ из интернета.

  12. Нажмите кнопку Сохранить.

  13. В блоке Масштабирование укажите Размер группы ВМ — 2.

  14. В блоке Интеграция с Application Load Balancer выберите опцию Создать целевую группу и укажите имя группы — vhosting-tg-a. Подробнее о целевых группах.

  15. Нажмите кнопку Создать.

Аналогично создайте для сайта site-b.com вторую группу ВМ с именем vhosting-ig-b и целевую группу с именем vhosting-tg-b.

Создание группы ВМ может занять несколько минут. Когда группа перейдет в статус RUNNING, а все ВМ в ней — в статус RUNNING_ACTUAL, вы можете загрузить на них файлы сайта.

ig-running

Загрузите файлы сайтов на ВМ

Чтобы проверить работу веб-серверов, загрузите на ВМ файлы index.html: на ВМ из группы vhosting-ig-a — с одним содержанием, а на ВМ из группы vhosting-ig-b — с другим.

Пример файла index.html для группы vhosting-ig-a
<!DOCTYPE html>
<html>
  <head>
    <title>Site A</title>
  </head>
  <body>
    <p>This is site A</p>
  </body>
</html>
Пример файла index.html для группы vhosting-ig-b
<!DOCTYPE html>
<html>
  <head>
    <title>Site B</title>
  </head>
  <body>
    <p>This is site B</p>
  </body>
</html>

Чтобы загрузить файл на ВМ:

  1. В блоке Сеть на странице виртуальной машины в консоли управления найдите публичный IP-адрес виртуальной машины.

  2. Подключитесь к виртуальной машине по протоколу SSH.

  3. Выдайте права на запись для вашего пользователя на директорию /var/www/html:

    Ubuntu
    CentOS
    sudo chown -R "$USER":www-data /var/www/html
    
    sudo chown -R "$USER":apache /var/www/html
    
  4. Загрузите на ВМ файлы сайта с помощью протокола SCP.

    Linux/macOS
    Windows

    Используйте утилиту командной строки scp:

    scp -r <путь_до_директории_с_файлами> <имя_пользователя_ВМ>@<IP-адрес_виртуальной_машины>:/var/www/html
    

    С помощью программы WinSCP скопируйте локальную директорию с файлами в директорию /var/www/html на ВМ.

Повторите этот процесс с нужными файлами для каждой ВМ из групп vhosting-ig-a и vhosting-ig-b.

Создайте группы бэкендов

Целевые группы, созданные вместе с группами ВМ, нужно привязать к группам бэкендов с настройками распределения трафика.

Для бэкендов в группах будут созданы проверки состояния: балансировщик будет периодически отправлять проверочные запросы к ВМ и ожидать ответа в течение определенного периода.

Чтобы создать группу бэкендов для сайта site-a.com:

  1. В консоли управления выберите сервис Application Load Balancer.
  2. На панели слева выберите Группы бэкендов. Нажмите кнопку Создать группу бэкендов.
  3. Укажите Имя группы бэкендов: vhosting-bg-a.
  4. В блоке Бэкенды нажмите кнопку Добавить.
  5. Укажите Имя бэкенда: vhosting-backend-a.
  6. В поле Целевые группы выберите группу vhosting-tg-a.
  7. Укажите Порт, на котором ВМ бэкенда будут принимать входящий трафик от балансировщика: 80.
  8. Нажмите кнопку Добавить проверку состояния.
  9. Укажите Порт, на котором ВМ бэкенда будут принимать проверочные соединения: 80.
  10. Укажите Путь, к которому будет обращаться балансировщик при проверке состояния: /.
  11. Нажмите кнопку Создать.

Аналогично создайте для сайта site-b.com вторую группу бэкендов vhosting-bg-b, в ней — бэкенд vhosting-backend-b и привяжите к нему целевую группу vhosting-tg-b.

Создайте и настройте HTTP-роутеры

Группы бэкендов нужно привязать к HTTP-роутерам с правилами маршрутизации HTTP-запросов. В сценарии будут созданы два роутера для «основных» сайтов site-a.com и site-b.com и роутер «по умолчанию» для сайта default.com, который будет отвечать на каждый запрос HTTP-кодом состояния 404 Not Found.

Создайте HTTP-роутеры для сайтов

Чтобы создать HTTP-роутер для сайта site-a.com:

Консоль управления
  1. В консоли управления выберите сервис Application Load Balancer.
  2. На панели слева выберите HTTP-роутеры. Нажмите кнопку Создать HTTP-роутер.
  3. Укажите Имя HTTP-роутера: vhosting-router-a.
  4. Нажмите кнопку Добавить виртуальный хост.
  5. Укажите Имя виртуального хоста: vhosting-host-a.
  6. В поле Authority укажите доменное имя сайта: site-a.com.
  7. Нажмите кнопку Добавить маршрут.
  8. Укажите Имя маршрута: vhosting-route-a.
  9. В поле Группа бэкендов выберите группу vhosting-bg-a.
  10. Нажмите кнопку Создать.

Аналогично создайте для сайта site-b.com HTTP-роутер vhosting-router-b и привяжите к нему группу бэкендов vhosting-bg-b.

Создайте HTTP-роутер «по умолчанию»

Чтобы создать HTTP-роутер для сайта default.com:

Консоль управления
  1. В консоли управления выберите сервис Application Load Balancer.

  2. На панели слева выберите HTTP-роутеры. Нажмите кнопку Создать HTTP-роутер.

  3. Укажите Имя HTTP-роутера: vhosting-router-default.

  4. Нажмите кнопку Добавить виртуальный хост.

  5. Укажите Имя виртуального хоста: vhosting-host-default.

  6. В поле Authority укажите доменное имя сайта: default.com.

  7. Нажмите кнопку Добавить маршрут.

  8. Укажите Имя маршрута: vhosting-route-a.

  9. В поле Действие выберите Ответ.

  10. В поле Код состояния HTTP выберите 404 Not Found.

  11. В поле Тело ответа нажмите кнопку Выбрать. Выберите способ Текст и в поле Содержимое укажите:

    404 Not Found
    
    This is the default site.
    

    Нажмите кнопку Добавить.

  12. Нажмите кнопку Создать.

Создайте L7-балансировщик

Чтобы создать балансировщик:

Консоль управления
  1. В консоли управления выберите сервис Application Load Balancer.
  2. Нажмите кнопку Создать L7-балансировщик.
  3. Укажите Имя балансировщика: vhosting-alb.
  4. В блоке Сетевые настройки выберите группу безопасности vhosting-sg-balancer, созданную ранее.
  5. Создайте обработчик для перенаправления HTTP-запросов на HTTPS:
    1. В блоке Обработчики нажмите кнопку Добавить обработчик.
    2. Укажите Имя обработчика: vhosting-listener-http.
    3. В блоке Публичный IP-адрес выберите тип Список и IP-адрес, зарезервированный ранее.
    4. В поле Протокол выберите пункт Перенаправлять на HTTPS.
  6. Создайте обработчик HTTPS-запросов:
    1. Снова нажмите кнопку Добавить обработчик.
    2. Укажите Имя обработчика: vhosting-listener-https.
    3. В блоке Публичный IP-адрес выберите тип Список и IP-адрес, зарезервированный ранее.
    4. В поле Протокол выберите пункт HTTPS.
    5. В блоке Основной обработчик выберите сертификат vhosting-cert-default и HTTP-роутер vhosting-router-default.
    6. Добавьте обработчик SNI для сайта site-a.com:
      1. Нажмите кнопку Добавить обработчик SNI.
      2. Укажите Имя обработчика SNI: vhosting-sni-a.
      3. В поле Имена серверов укажите site-a.com.
      4. Выберите сертификат vhosting-cert-a и HTTP-роутер vhosting-router-a.
    7. Аналогично добавьте обработчик SNI для сайта site-b.com — с именем vhosting-sni-b, именем сервера site-b.com, сертификатом vhosting-cert-b и HTTP-роутером vhosting-router-b.
  7. Нажмите кнопку Создать.

Настройте DNS для сайтов

Доменные имена site-a.com, site-b.com и default.com должны быть связаны с IP-адресом L7-балансировщика с помощью записей DNS.

Чтобы настроить DNS для сайта site-a.com:

  1. В консоли управления выберите сервис Application Load Balancer.

  2. Скопируйте IP-адрес созданного балансировщика.

  3. На сайте компании, которая предоставляет вам услуги DNS-хостинга, перейдите в настройки DNS.

  4. Создайте или измените A-запись для site-a.com таким образом, чтобы она указывала на скопированный IP-адрес:

    site-a.com. A <IP-адрес_L7-балансировщика>
    

    Если вы пользуетесь Yandex Cloud DNS, настройте запись по следующей инструкции:

    Инструкция по настройке DNS-записей для Cloud DNS
    Консоль управления
    1. В консоли управления выберите сервис Cloud DNS.
    2. Если у вас нет публичной зоны DNS, создайте ее:
      1. Нажмите кнопку Создать зону.
      2. Укажите Имя зоны: vhosting-dns-a.
      3. В поле Зона укажите доменное имя сайта с точкой в конце: site-a.com.
      4. Выберите Тип зоны — Публичная.
      5. Нажмите кнопку Создать.
    3. Создайте запись в зоне:
      1. В списке зон нажмите на зону vhosting-dns-a.
      2. Нажмите кнопку Создать запись.
      3. Поле Имя оставьте пустым, чтобы запись соответствовала доменному имени site-a.com (а не имени с субдоменом, например www.site-a.com).
      4. Выберите Тип записи — A.
      5. В поле Значение вставьте скопированный IP-адрес балансировщика.
      6. Нажмите кнопку Создать.

Аналогично настройте DNS для сайтов site-b.com и default.com, используя тот же IP-адрес.

Через 15–20 минут после настройки DNS вы сможете проверить работу сайтов.

Проверьте работу хостинга

Чтобы проверить работу хостинга, откройте каждый из трех сайтов в браузере:

  • https://site-a.com и https://site-b.com — должны отобразиться страницы, загруженные на ВМ.
  • https://default.com — должна отобразиться страница с ошибкой 404 Not Found, настроенная при создании HTTP-роутера.

Удалите созданные ресурсы

Чтобы остановить работу хостинга и перестать платить за созданные ресурсы:

  1. Удалите нетарифицируемые ресурсы, которые блокируют удаление тарифицируемых ресурсов:
    1. Удалите L7-балансировщик vhosting-alb.
    2. Удалите HTTP-роутеры vhosting-router-a, vhosting-router-b и vhosting-router-default.
    3. Удалите группы бэкендов vhosting-bg-a и vhosting-bg-b.
  2. Удалите группы ВМ vhosting-ig-a и vhosting-ig-b.
  3. Удалите зарезервированный статический публичный адрес.
  4. Если вы использовали Yandex Cloud DNS, то удалите DNS-записи и удалите DNS-зону.

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

Предыдущая
Установка Ingress-контроллера NGINX в Managed Service for Kubernetes
Следующая
Хостинг статического сайта на фреймворке Gatsby в Object Storage
Проект Яндекса
© 2025 ООО «Яндекс.Облако»