До основного вмісту

Server block у Nginx: віртуальні хости для декількох сайтів

Nginx · 29.09.2026

Server block — це аналог virtual host з Apache: блок конфігурації, який описує один сайт. На одному сервері з однією IP-адресою можуть працювати десятки server block, і Nginx обирає потрібний за заголовком Host із запиту. Після встановлення Nginx, описаного у статті про встановлення Nginx на Ubuntu і Debian, наступний крок — створити перший server block для свого домену.

Що таке server block і навіщо він потрібен

Без server block Nginx віддає всім запитам один і той самий дефолтний конфіг з /etc/nginx/sites-enabled/default. Щойно на сервері з'являється другий сайт, потрібен окремий блок server з власним коренем документів, логами і правилами обробки.

Кожен server block описує: на якому порту слухати (listen), для яких доменів він призначений (server_name), де лежать файли сайту (root) і як обробляти різні типи запитів (директиви location, детально розібрані у статті про пріоритет location у Nginx).

Структура sites-available і sites-enabled

На Ubuntu і Debian конфігурації сайтів прийнято зберігати у двох каталогах:

  • /etc/nginx/sites-available/ — тут лежать файли конфігурації всіх сайтів, увімкнених і вимкнених.
  • /etc/nginx/sites-enabled/ — тут лежать символічні посилання на активні конфігурації з sites-available.

Такий поділ дає змогу швидко вимкнути сайт, просто видаливши symlink, не чіпаючи сам файл конфігурації. Створення нового сайту виглядає так:

sudo nano /etc/nginx/sites-available/example.com
sudo ln -s /etc/nginx/sites-available/example.com /etc/nginx/sites-enabled/
sudo nginx -t
sudo systemctl reload nginx

Мінімальний server block для одного сайту

Базова конфігурація для статичного сайту на домені example.com виглядає так:

server {
    listen 80;
    server_name example.com www.example.com;
    root /var/www/example.com/public;
    index index.html index.php;

    access_log /var/log/nginx/example.com.access.log;
    error_log  /var/log/nginx/example.com.error.log;
}

Директива listen задає порт і, за потреби, IP-адресу: listen 192.0.2.10:80 прив'яже сервер лише до однієї адреси. Директива server_name перелічує домени через пробіл — Nginx порівнює їх із заголовком Host вхідного запиту.

Декілька сайтів на одному сервері

Щоб розмістити другий сайт, створіть окремий файл у sites-available з іншим server_name і власним root. Nginx обирає відповідний server block за точним збігом server_name, а якщо збігу немає — використовує блок із прапорцем default_server.

ДирективаПризначення
listen 80 default_serverОбробляє запити без збігу за server_name
server_name example.comТочний збіг домену
server_name *.example.comЗбіг за маскою піддоменів
server_name example.com www.example.comДекілька доменів на один сайт

Часті помилки під час налаштування server block

Забутий default_server на одному з блоків listen 80 — найчастіша причина, чому Nginx відкриває не той сайт за IP-адресою без домену. Лише один server block у межах порту може мати прапорець default_server, інакше nginx -t видасть помилку duplicate default server.

Друга поширена помилка — забути створити symlink у sites-enabled після правки sites-available: конфігурація лежить на диску, але Nginx її не використовує, доки не виконано nginx -t і reload. Для HTTPS-сайтів додатково знадобиться SSL-сертифікат — цей процес описано у статті про налаштування SSL/TLS у Nginx.

Перевірка і застосування конфігурації

Після будь-якої зміни файлів у sites-available обов'язкові дві команди:

  1. sudo nginx -t — перевіряє синтаксис усіх підключених конфігурацій разом.
  2. sudo systemctl reload nginx — застосовує зміни без розриву активних з'єднань.

Якщо nginx -t повернув помилку, systemctl reload нічого не змінить — Nginx продовжить працювати зі старою конфігурацією до виправлення помилки. Це захищає production-сайт від падіння через одруківку в конфігу.

Server block — базовий будівельний блок конфігурації Nginx: один файл на один сайт, чіткий поділ sites-available і sites-enabled, обов'язкова перевірка nginx -t перед reload. На цьому фундаменті будуються складніші сценарії — правила location, reverse proxy і SSL.

← Назад до бази знань Поставити питання підтримці