Как разместить несколько сайтов на одном VPS
Представьте, что запускаете несколько сайтов. У вас есть VPS, и вы хотите разместить их в одном месте. Сэкономите на хостинге и сделаете так, чтобы все проекты были под рукой. В статье расскажем, как запустить несколько сайтов без конфликтов на портах и с независимой работой. Будем использовать Nginx в качестве реверс-прокси и Docker для контейнеризации.
Обратите внимание: код дается в качестве примера. Вам предстоит адаптировать его под себя. Либо обратитесь за помощью к техподдержке вашего VPS-сервиса. Задача статьи — показать последовательность.
Зачем нужны реверс-прокси и Docker
Неопытный пользователь может впасть в ступор, столкнувшись с такими терминами, как реверс-прокси и Docker. Для опытного профессионала это базовые вещи.
Зачем нужен реверс-прокси?
Без него сервер, который принимает запросы на порты 80 и 443, не поймёт, какой сайт должен обработать запрос. Пользователи вместо целевой страницы сайта получат ненужные ответы. Реверс-прокси Nginx анализирует DNS-записи и направляет запросы на нужный сайт на основе доменного имени.
И не забываем про Docker.
Docker — идеальный инструмент для изоляции приложений. Без изоляции ресурсы серверов путаются и создают конфликты между приложениями. Docker решает проблему и дает каждому сайту отдельное пространство.
Настройка DNS
Не будем недооценивать важность правильной настройки DNS. Запуск нескольких сайтов на одном VPS невозможен без настройки DNS-записей. Это тот шаг, который многие упускают.
Для этого нужно создать A-записи для каждого домена и указать IP-адрес VPS. Эти записи сделают правильную маршрутизацию запросов к серверу. Например, для домена site1.example.com создайте запись:
Повторите это для каждого сайта, который вы хотите запустить на вашем VPS. Этот шаг является обязательным, если вы не хотите, чтобы пользователи видели страницу ошибки вместо вашего сайта.
Решаем первую проблему: порты и адресация запросов
Когда на одном сервере работает несколько сайтов, появляется вопрос: как Nginx поймет, куда направить каждый запрос? Все сайты пытаются использовать порты 80 и 443 для HTTP- и HTTPS-соединений. Чтобы решить задачу, будем использовать реверс-прокси. Он перехватывает запросы на основе DNS и перенаправляет на нужные контейнеры.
Установка Nginx и Docker
Если уже настроен VPS, первым делом установите Nginx и Docker. Это инструменты, которые дадут развернуть сайты в контейнерах и управлять запросами через реверс-прокси.
Обновляем APT и устанавливаем Nginx
Настроим фаервол. Разрешим HTTP-доступ:
Устанавливаем Docker
Для начала добавим репозиторий Docker и установим его:
Запуск сайтов в Docker
Теперь создадим контейнеры для сайтов. В примере будем использовать CMS Ghost — легкий и простой в развертывании движок для блогов.
Создаем сеть Docker
Запускаем контейнеры для двух сайтов
Получаем IP-адреса контейнеров
Узнаем IP для каждого сайта:
Ограничение доступа к Docker-контейнерам
Зачем оставлять контейнеры открытыми, если их можно защитить? Используйте firewall для ограничения доступа, чтобы только Nginx мог взаимодействовать с контейнерами.
Мониторинг и управление
После того, как запустили сайты на VPS, работа еще не закончена. Мониторинг работы контейнеров и Nginx — то, что отличает профессионала от любителя. Docker предоставляет доступ к логам контейнеров с помощью команды:
Для полного контроля лучше использовать инструменты мониторинга, такие как Netdata или Prometheus. Они дадут полную картину: от состояния серверов до использования ресурсов.
Оптимизация производительности
Теперь, когда сайты работают, стоит задуматься о том, как улучшить производительность. Nginx предлагает массу возможностей для оптимизации — от кэширования до балансировки нагрузки. Включите кэширование запросов, чтобы снизить нагрузку на сервер:
Это позволит серверу дышать свободнее и даст пользователям более быстрый доступ к контенту.
Настройка реверс-прокси
Теперь настроим Nginx для управления запросами к каждому сайту. Добавляем два конфигурационных файла в /etc/nginx/conf.d — по одному для каждого сайта.
Конфигурация для первого сайта
Конфигурация для второго сайта
Теперь сайты работают на одном VPS. На следующем этапе позаботьтесь о безопасности и подключите SSL-сертификаты. Используйте Let’s Encrypt для бесплатных сертификатов и настройте их для Nginx.
Тестирование и отладка
Последний шаг перед запуском в продакшн — тестирование и отладка. Никогда не доверяйте настройкам вслепую. Проверьте корректность работы реверс-прокси с помощью:
Эта команда покажет HTTP-заголовки и позволит убедиться, что сайт возвращает правильные ответы. Обязательно проверьте сайты через браузер, чтобы убедиться, что они правильно отображаются и работают.
Настройка SSL-сертификатов
Без безопасного подключения по HTTPS рискуете не только потерять доверие пользователей, но и оказаться в немилости у поисковых систем. Поэтому настройка SSL-сертификатов — не опция, это необходимость. Для этого можно воспользоваться Let’s Encrypt, который предоставляет бесплатные сертификаты. Всё, что нужно сделать, — установить Certbot и выполнить команду для получения сертификата:
Теперь сайты зашифрованы, и трафик между пользователем и сервером защищен.
Запуск нескольких сайтов на одном VPS может показаться сложной задачей, но с правильной настройкой реверс-прокси, Docker и управлением DNS-записями это просто.
Следуйте пошаговому руководству. Так вы обеспечите стабильную и безопасную работу сайтов, а также сможете масштабировать инфраструктуру по мере роста проектов. Не забывайте про мониторинг и оптимизацию производительности — это ключ к долгосрочному успеху.
Если ищете стабильный, быстрый и надёжный VPS для своих проектов, LikeVPS — отличный выбор. С их серверами и гибкими тарифными планами вы можете масштабировать ресурсы в зависимости от потребностей.