Справочник системных ошибок и решений

Windows Server, Active Directory, 1С:Предприятие, СУБД, Linux, Cisco, MikroTik, Asterisk.

⚠️ Важная информация Все материалы, инструкции, команды и скрипты на сайте предоставлены исключительно в ознакомительных целях. Их применение может повлиять на работу операционной системы, программного обеспечения, баз данных, сетевого оборудования и других компонентов инфраструктуры. Перед выполнением действий создайте резервную копию и по возможности протестируйте изменения в безопасной среде. Пользователь самостоятельно оценивает риски и несет ответственность за результат. При отсутствии необходимых знаний обратитесь к квалифицированному ИТ-специалисту.

Linux / DevOps

Мультисайтовость в Nginx: настройка 5 сайтов на одном VPS (Server Blocks)

Обновлено: 27.08.2026 · Официальная документация ↗

Как экономить на серверах: несколько сайтов на одном VPS

Нет необходимости покупать отдельный сервер под каждый небольшой проект. Веб-сервер Nginx умеет маршрутизировать запросы на основе заголовка Host: пользователь вводит site1.com — открывается первый сайт, вводит site2.ru — открывается второй.

Архитектура структуры папок Nginx

/etc/nginx/
├── sites-available/ (Каталог шаблонов всех сайтов)
└── sites-enabled/   (Каталог активных сайтов через симлинки)

Создание и включение нового виртуального хоста

  1. Создаем отдельную папку для нового сайта:
    sudo mkdir -p /var/www/site1.com/html
    sudo chown -R $USER:$USER /var/www/site1.com/html
  2. Создаем тестовую HTML-страничку:
    echo "<h1>Site 1 is working!</h1>" > /var/www/site1.com/html/index.html
  3. Создаем конфигурационный файл виртуального хоста:
    sudo nano /etc/nginx/sites-available/site1.com.conf
  4. Вставляем минимальный рабочий конфиг:
    server {
        listen 80;
        server_name site1.com www.site1.com;
    
        root /var/www/site1.com/html;
        index index.html index.php;
    
        location / {
            try_files $uri $uri/ =404;
        }
    }
  5. Активируем сайт созданием символической ссылки (symlink):
    sudo ln -s /etc/nginx/sites-available/site1.com.conf /etc/nginx/sites-enabled/
  6. Проверяем синтаксис и перезагружаем Nginx:
    sudo nginx -t && sudo systemctl reload nginx

Повторите эти шаги для site2.com, site3.com и так далее, меняя пути к папкам и доменные имена.

💡 Практика специалистов: Всегда держите оригиналы конфигураций в sites-available, а в sites-enabled создавайте только относительные симлинки. Это стандарт разработки Debian/Ubuntu.

Частые вопросы (FAQ)

Что делать, если при проверке nginx -t выводится duplicate default server?

Параметр default_server может быть указан только в одном блоке конфигурации на всем сервере.

Как временно отключить один сайт?

Удалите символическую ссылку: sudo rm /etc/nginx/sites-enabled/site1.com.conf и выполните reload nginx.

Где прописать обработку PHP для этих сайтов?

Добавьте блок location ~ \.php$ с проксированием в fastcgi_pass unix:/run/php/php-fpm.sock.

Почему открывается не тот сайт при переходе по IP?

Nginx отдает первый по алфавиту сайт из sites-enabled, если домен явно не опознан.

Полезные материалы
Рекомендуем