Когда у меня появился первый VPS, я разместила на нём один проект и подумала: «Ну, места хватает, ресурсов тоже — зачем платить ещё за второй сервер?». И тут встал вопрос: как правильно держать несколько сайтов на одном VPS, чтобы всё работало быстро, безопасно и без конфликта портов? Ответом стал Nginx с его поддержкой виртуальных хостов (server blocks).
Почему Nginx подходит для нескольких сайтов
Nginx изначально спроектирован как лёгкий и быстрый веб-сервер. Его архитектура «одно ядро — много соединений» позволяет без проблем обслуживать десятки сайтов даже на скромных конфигурациях. Главное — правильно прописать server blocks (виртуальные хосты).
Плюсы:
- экономия на инфраструктуре (несколько сайтов — один VPS);
- изоляция конфигураций (каждый домен живёт в своём блоке);
- удобное масштабирование (добавил конфиг — получил новый сайт).
Шаг 1. Структура каталогов
Чтобы не запутаться, лучше сразу завести отдельные папки:
/var/www/ ├── site1.com/ │ └── public_html/ ├── site2.org/ │ └── public_html/
Каждый сайт хранится в своей директории, права доступа — через владельца (
chown -R www-data:www-data
Шаг 2. Настройка Nginx под несколько доменов
Файлы конфигурации создаём в
/etc/nginx/sites-available/
Для site1.com:
server { listen 80; server_name site1.com www.site1.com; root /var/www/site1.com/public_html; index index.html index.php; location / { try_files $uri $uri/ =404; } }
Для site2.org:
server { listen 80; server_name site2.org www.site2.org; root /var/www/site2.org/public_html; index index.html index.php; location / { try_files $uri $uri/ =404; } }
Дальше активируем:
sudo ln -s /etc/nginx/sites-available/site1.com /etc/nginx/sites-enabled/ sudo ln -s /etc/nginx/sites-available/site2.org /etc/nginx/sites-enabled/
И проверяем конфиг:
sudo nginx -t sudo systemctl reload nginx
Шаг 3. SSL для каждого домена
Без HTTPS сегодня никуда. Самый удобный способ — Let’s Encrypt через Certbot:
sudo apt install certbot python3-certbot-nginx -y sudo certbot --nginx -d site1.com -d www.site1.com sudo certbot --nginx -d site2.org -d www.site2.org
Nginx автоматически обновит конфиги, добавит
listen 443 ssl
Шаг 4. Логи и мониторинг
Каждый сайт получает свои логи:
access_log /var/log/nginx/site1.access.log; error_log /var/log/nginx/site1.error.log;
То же для второго. Это сильно облегчает отладку — видно, где проблемы.
Личный опыт
У меня был VPS на 2 ГБ RAM, где жили одновременно:
- мой блог на WordPress,
- тестовый сайт для клиента,
- и мини-портфолио.
Все три сайта работали на одном Nginx, и сервер держал нагрузку без проблем. Самая большая ошибка, которую я совершила вначале, — разместила все проекты в одной директории. Потом при обновлениях начался хаос. Поэтому совет: держите жёсткую структуру директорий и аккуратно прописывайте права.
Полезные советы
- используйте fail2ban для защиты от переборов по SSH и HTTP;
- включайте gzip/brotli в Nginx для оптимизации скорости;
- ставьте PHP-FPM пулы отдельно для каждого сайта (если проекты на PHP).
Поддерживать несколько сайтов на одном VPS через Nginx — это реально и удобно. Главное — структурировать каталоги, грамотно прописывать server blocks и позаботиться про HTTPS. Такой подход отлично подходит для блогов, лендингов и даже средних e-commerce проектов.
Доверие — это взаимно
Оплачиваете 12 месяцев — получаете 13. Потому что нам важны долгосрочные отношения.