- Home »

Настройка серверных блоков (виртуальных хостов) Nginx на Ubuntu 24.04
В этой статье разберёмся, как настроить серверные блоки (виртуальные хосты) Nginx на Ubuntu 24.04. Если ты когда-нибудь пытался поднять несколько сайтов на одном сервере, то точно сталкивался с этим вопросом. Серверные блоки — это не просто “ещё один конфиг”, а ключ к грамотному управлению сайтами, экономии ресурсов и автоматизации. Здесь будет всё: как это работает, как быстро всё настроить, какие грабли могут встретиться и как их обойти. Погнали!
Как это работает? — Серверные блоки Nginx простым языком
Nginx — это не просто веб-сервер, а настоящий швейцарский нож для современных проектов. Серверные блоки (server blocks, aka виртуальные хосты) позволяют запускать на одном сервере сразу несколько сайтов с разными доменами, настройками, SSL-сертификатами и даже разными пользователями.
- Один сервер — много сайтов: Каждый блок — это отдельный сайт, который Nginx обслуживает по своим правилам.
- Гибкость: Можно задать разные корневые директории, логи, SSL, редиректы и даже проксировать на разные backend’ы.
- Изоляция: Ошибки или настройки одного сайта не влияют на остальные.
Всё это реализуется через конфиги в /etc/nginx/sites-available/
и симлинки в /etc/nginx/sites-enabled/
. Nginx читает все файлы из enabled, и каждый такой файл — это отдельный серверный блок.
Как быстро и просто всё настроить?
Давай без воды — вот пошаговая инструкция, как поднять два сайта на одном сервере с Ubuntu 24.04 и Nginx.
-
Установка Nginx
sudo apt update
sudo apt install nginx
Проверь, что всё работает:
systemctl status nginx
-
Создание директорий для сайтов
sudo mkdir -p /var/www/site1.ru/html
sudo mkdir -p /var/www/site2.ru/html
sudo chown -R $USER:$USER /var/www/site1.ru/html /var/www/site2.ru/html
sudo chmod -R 755 /var/www
Положи туда свои index.html для теста. -
Создание серверных блоков
sudo nano /etc/nginx/sites-available/site1.ru
Пример конфига для первого сайта:server { listen 80; server_name site1.ru www.site1.ru; root /var/www/site1.ru/html; index index.html index.htm; access_log /var/log/nginx/site1.access.log; error_log /var/log/nginx/site1.error.log; location / { try_files $uri $uri/ =404; } }
Аналогично для второго сайта (
site2.ru
). -
Активация серверных блоков
sudo ln -s /etc/nginx/sites-available/site1.ru /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.ru /etc/nginx/sites-enabled/
-
Отключение дефолтного блока (по желанию)
sudo rm /etc/nginx/sites-enabled/default
-
Проверка конфигов и перезапуск
sudo nginx -t
sudo systemctl reload nginx
-
Настройка DNS
Убедись, что доменыsite1.ru
иsite2.ru
смотрят на IP твоего сервера.
Вуаля! Теперь оба сайта работают независимо друг от друга. Если нужно SSL — ставь certbot и получай бесплатные сертификаты.
Примеры, схемы, практические советы
Давай рассмотрим пару кейсов — как делать надо и как делать не стоит.
Кейс | Что происходит | Рекомендация |
---|---|---|
Один серверный блок на все сайты | Все сайты лежат в одной папке, конфиг один, логи общие. При взломе одного сайта — доступ ко всем. | Так делать не стоит. Разделяй каждый сайт отдельным серверным блоком и директорией. |
Симлинки руками | Забыл создать симлинк — сайт не работает. Перепутал — не тот сайт грузится. | Проверяй симлинки и используй nginx -t перед перезапуском. |
SSL на каждый сайт | Каждый сайт с отдельным сертификатом, отдельными настройками безопасности. | Это правильно. Используй certbot для автоматизации. |
Автоматизация через скрипты | Добавление новых сайтов через bash-скрипт, автоматическое создание директорий, конфигов, симлинков. | Идеально для хостинга или частых деплоев. Можно использовать Ansible, bash, или даже Python. |
Полный список команд для настройки
# Установка Nginx
sudo apt update
sudo apt install nginx
# Создание директорий для сайтов
sudo mkdir -p /var/www/site1.ru/html
sudo mkdir -p /var/www/site2.ru/html
sudo chown -R $USER:$USER /var/www/site1.ru/html /var/www/site2.ru/html
sudo chmod -R 755 /var/www
# Создание серверных блоков
sudo nano /etc/nginx/sites-available/site1.ru
sudo nano /etc/nginx/sites-available/site2.ru
# Активация серверных блоков
sudo ln -s /etc/nginx/sites-available/site1.ru /etc/nginx/sites-enabled/
sudo ln -s /etc/nginx/sites-available/site2.ru /etc/nginx/sites-enabled/
# Отключение дефолтного блока
sudo rm /etc/nginx/sites-enabled/default
# Проверка конфигов и перезапуск
sudo nginx -t
sudo systemctl reload nginx
# Установка certbot для SSL
sudo apt install certbot python3-certbot-nginx
sudo certbot --nginx
Похожие решения, программы и утилиты
- Apache HTTP Server — тоже поддерживает виртуальные хосты, но синтаксис другой и работает медленнее на статике.
- Caddy — автоматический HTTPS, простой конфиг, но меньше гибкости, чем у Nginx.
- Lighttpd — лёгкий, но редко используется для сложных проектов.
- Hitch, HAProxy — для балансировки и SSL-терминации, но не для статики и PHP.
Nginx — золотая середина между скоростью, гибкостью и простотой. Если хочется автоматизации — смотри в сторону Ansible или Terraform для инфраструктуры.
Статистика и сравнение с другими решениями
Сервер | Производительность (RPS, статика) | Конфигурируемость | Автоматизация | SSL |
---|---|---|---|---|
Nginx | ~30 000+ | Высокая | Легко | Да, через certbot |
Apache | ~10 000 | Очень высокая | Средне | Да |
Caddy | ~25 000 | Средняя | Очень легко | Авто-SSL |
Nginx — лидер по производительности и гибкости. Не зря его используют Facebook, Netflix, Dropbox, GitHub и куча других крупных проектов.
Интересные факты и нестандартные способы использования
- Reverse Proxy: Nginx может проксировать запросы к backend-серверам (Node.js, Python, Go, PHP-FPM) и балансировать нагрузку.
- API Gateway: Можно настроить серверные блоки для разных API, с отдельными лимитами, логами и авторизацией.
- Static CDN: Используй Nginx как CDN для статики — кешируй, раздавай с разных доменов, минимизируй задержки.
- Автоматизация деплоя: Скрипты на bash или Ansible позволяют за минуту поднять новый сайт с SSL, логами и мониторингом.
- Безопасность: Можно изолировать сайты по пользователям, ограничивать доступ по IP, включать WAF (например, ModSecurity).
Новые возможности и автоматизация
С выходом Ubuntu 24.04 и свежих версий Nginx стало ещё проще автоматизировать рутину:
- systemd: Быстрый рестарт и мониторинг сервисов.
- certbot с хуками: Автоматическое продление SSL и перезагрузка Nginx.
- Скрипты для массового деплоя: Можно заскриптовать добавление новых сайтов, создание конфигов, симлинков и даже настройку DNS через API регистраторов.
- Интеграция с CI/CD: После пуша в git — автоматический деплой сайта и обновление серверного блока.
Это экономит часы времени и снижает риск ошибок. А если хочется совсем “по-взрослому” — используй Ansible для управления сотнями серверов.
Вывод — почему, как и где использовать серверные блоки Nginx
Серверные блоки Nginx — это must-have для любого, кто хочет держать под контролем свои сайты, экономить ресурсы и не бояться масштабирования. Это быстро, гибко, надёжно и легко автоматизируется. Неважно, запускаешь ты лендинг, блог, интернет-магазин или целый SaaS — серверные блоки позволят держать всё в порядке, не мешать сайтам друг другу и быстро внедрять новые фичи.
- Для малых проектов — удобно держать несколько сайтов на одном VPS, не переплачивая за хостинг.
- Для бизнеса — легко масштабировать, добавлять новые домены, настраивать SSL и безопасность.
- Для разработчиков — автоматизация, деплой, тестовые стенды и CI/CD становятся проще.
Если нужен VPS для экспериментов или продакшена — заказать VPS можно тут. Для крупных проектов — выделенный сервер с быстрым SSD и поддержкой.
Официальная документация по Nginx: https://nginx.org/en/docs/
Документация Ubuntu: https://help.ubuntu.com/
Прокачивай свой сервер, автоматизируй рутину и не бойся экспериментировать — Nginx и Ubuntu 24.04 дают для этого все инструменты!
В этой статье собрана информация и материалы из различных интернет-источников. Мы признаем и ценим работу всех оригинальных авторов, издателей и веб-сайтов. Несмотря на то, что были приложены все усилия для надлежащего указания исходного материала, любая непреднамеренная оплошность или упущение не являются нарушением авторских прав. Все упомянутые товарные знаки, логотипы и изображения являются собственностью соответствующих владельцев. Если вы считаете, что какой-либо контент, использованный в этой статье, нарушает ваши авторские права, немедленно свяжитесь с нами для рассмотрения и принятия оперативных мер.
Данная статья предназначена исключительно для ознакомительных и образовательных целей и не ущемляет права правообладателей. Если какой-либо материал, защищенный авторским правом, был использован без должного упоминания или с нарушением законов об авторском праве, это непреднамеренно, и мы исправим это незамедлительно после уведомления. Обратите внимание, что переиздание, распространение или воспроизведение части или всего содержимого в любой форме запрещено без письменного разрешения автора и владельца веб-сайта. Для получения разрешений или дополнительных запросов, пожалуйста, свяжитесь с нами.