Зачем нужен Nginx на VPS
Nginx — один из самых популярных веб-серверов в мире. Почему? Потому что Nginx отлично справляется сразу с несколькими задачами:
- Быстро отдаёт статические файлы (HTML, CSS, картинки)
- Работает как обратный прокси — принимает запросы пользователей и перенаправляет их к вашему приложению (Node.js, PHP, Python)
- Обеспечивает SSL-шифрование — защищает данные между браузером и сервером
- Сжимает и кэширует контент — ускоряет загрузку страниц для посетителей
В этом руководстве пройдём весь путь: от установки Nginx на чистый VPS до рабочей конфигурации с SSL-сертификатом. Все команды для Ubuntu/Debian, все провайдеры — российские.
Что такое Nginx и как он работает
Nginx (произносится «энджинкс») — это программа, которая устанавливается на сервер и обрабатывает запросы от браузеров посетителей. Когда кто-то открывает ваш сайт, именно Nginx решает, какой файл или страницу отправить в ответ.
Главное отличие Nginx от классического Apache — способ обработки запросов. Apache в режиме prefork держит отдельный процесс на каждое соединение, и при большом числе посетителей памяти уходит много. Nginx обрабатывает тысячи соединений в нескольких рабочих процессах.
Nginx используют в двух основных режимах:
- Веб-сервер — напрямую отдаёт файлы сайта посетителям. Идеально для статических сайтов, лендингов, блогов
- Обратный прокси — принимает запросы и передаёт их приложению (Node.js, Django, WordPress/PHP-FPM), а ответ отправляет обратно посетителю
На одном VPS Nginx может одновременно обслуживать несколько сайтов через виртуальные хосты — каждый со своим доменом и настройками.
Минимальные требования к VPS для Nginx
Nginx — один из самых легковесных веб-серверов. Но неправильно подобранный сервер снизит производительность:
Процессор: 1 ядро (минимум), 2 ядра (рекомендуется). Nginx эффективно использует все доступные ядра.
Оперативная память: 512 МБ (минимум), 1-2 ГБ (рекомендуется). При работе с PHP или проксировании приложений требуется больше.
Диск: 10 ГБ SSD (минимум), 20 ГБ NVMe (рекомендуется).
Операционная система: Ubuntu 22.04/24.04 LTS или Debian 12.
Для работы Nginx должны быть открыты порты 80 (HTTP), 443 (HTTPS) и 22 (SSH для управления).
Российские VPS под Nginx: тарифы и цены 2026
Выбор провайдера влияет на скорость и стабильность сайта. Ниже — тарифы наших трёх провайдеров, подходящие под Nginx, с условием оплаты у каждой цены:
AdminVPS — от 349 руб/мес при помесячной оплате. Тариф Lite: 1 vCPU 3,6 ГГц, 1 ГБ RAM, 15 ГБ NVMe. Защита от DDoS уровня L2–L4 указана в описании тарифов, техподдержка 24/7; настройку веб-сервера AdminVPS берёт на себя в линейке «Всё включено», она дороже.
Timeweb Cloud — Cloud MSK 40 за 900 ₽/мес при оплате за 12 месяцев со скидкой 10 %: 2 vCPU 3,3 ГГц, 2 ГБ RAM, 40 ГБ NVMe, канал 1 Гбит/с. Биллинг у провайдера почасовой, в маркетплейсе готовые образы.
Timeweb — та же линейка Cloud MSK, 900 ₽/мес при оплате за 12 месяцев со скидкой 10 %. Локации те же: Санкт-Петербург, Москва, Новосибирск, Казахстан, Нидерланды, Германия.
Для большинства проектов оптимальный старт — тариф с 1 ГБ RAM и NVMe-диском. Сравнить все VPS-тарифы.
Реклама · ООО «Админвпс»
AdminVPS Promo — 499 ₽ при оплате за месяц
1 ядро 3,6 ГГц, 2 ГБ памяти, 30 ГБ NVMe, канал до 1 Гбит/с и 3 ТБ трафика в месяц, еженедельные копии входят в тариф — запас и под статику, и под Nginx перед приложением или PHP. По списку требований выше диска тут с запасом, но ядро одно: рекомендуемые два ядра — у Micro за 899 ₽ при оплате за месяц. По промокоду EASYLINK первый месяц Promo — 199,60 ₽ при оплате за месяц. Для одного статического лендинга хватит и Lite за 349 ₽ при оплате за месяц: 1 ГБ памяти, 15 ГБ NVMe, канал 100 Мбит/с, без панели, копии платные, промокод к нему не применяется. При оплате за 12 месяцев Promo стоит 5 090 ₽ за год вместо 5 988.
Год −15 %
Пошаговая установка Nginx на VPS
Все команды выполняются от имени root или через sudo на Ubuntu/Debian.
Шаг 1. Подключение и обновление
Подключитесь к серверу по SSH и обновите системные пакеты:
apt update && apt upgrade -yШаг 2. Установка Nginx
apt install nginx -y
systemctl enable --now nginxШаг 3. Проверка работы
Откройте IP-адрес сервера в браузере — должна появиться страница «Welcome to nginx!». Или проверьте из терминала:
curl -I http://localhostШаг 4. Настройка виртуального хоста
Создайте файл конфигурации для вашего домена:
nano /etc/nginx/sites-available/your-site.confПример базовой конфигурации:
server {
listen 80;
server_name your-domain.ru www.your-domain.ru;
root /var/www/your-site;
index index.html;
location / {
try_files $uri $uri/ =404;
}
access_log /var/log/nginx/your-site.access.log;
error_log /var/log/nginx/your-site.error.log;
}Каталог сайта Nginx сам не создаёт. Без него домен ответит 404 — при проверке 11.10.2026 так и вышло. Создайте каталог и первую страницу:
mkdir -p /var/www/your-site
echo '<h1>Работает</h1>' > /var/www/your-site/index.htmlШаг 5. Активация и проверка
Создайте символическую ссылку, проверьте конфигурацию и перезагрузите Nginx:
ln -s /etc/nginx/sites-available/your-site.conf /etc/nginx/sites-enabled/
nginx -t
systemctl reload nginxПодключение SSL-сертификата
Для защиты данных между браузером и сервером необходим SSL-сертификат. Бесплатный сертификат от Let's Encrypt устанавливается двумя командами.
Установите Certbot:
apt install certbot python3-certbot-nginx -yПолучите сертификат и автоматически настройте HTTPS:
certbot --nginx -d your-domain.ruCertbot автоматически добавит перенаправление с HTTP на HTTPS а автопродление уже запланировал пакет certbot (сертификат сейчас действует 90 дней).
Проверьте что конфигурация корректна:
nginx -t && systemctl reload nginxНесколько сайтов на одном сервере: server blocks
Один VPS обслуживает столько доменов, сколько потянет по памяти: каждому сайту заводится свой блок server. Документация nginx называет их server blocks; в мире Apache то же самое зовут виртуальными хостами.
Файл на каждый сайт кладут отдельно и включают ссылкой:
nano /etc/nginx/sites-available/pervyj.ru
ln -s /etc/nginx/sites-available/pervyj.ru /etc/nginx/sites-enabled/Минимальный блок для статического сайта выглядит так:
server {
listen 80;
server_name pervyj.ru www.pervyj.ru;
root /var/www/pervyj.ru;
index index.html;
}Второй сайт — такой же файл со своим server_name и своим root. Перезагружать сервер целиком не нужно: проверка конфигурации и мягкая перезагрузка делают это без обрыва соединений.
nginx -t && systemctl reload nginxКак nginx выбирает, какой блок ответит
Порядок задан документацией (nginx.org, «Server names»), и знать его стоит: именно тут сайты начинают показываться друг вместо друга.
- точное совпадение имени — pervyj.ru
- самое длинное имя со звёздочкой в начале — *.pervyj.ru
- самое длинное имя со звёздочкой в конце — mail.*
- первое подходящее регулярное выражение в порядке записи в файле
Запрос, не подошедший ни одному блоку, попадёт в блок с пометкой default_server, а если её нет — в первый по порядку. Отсюда частая жалоба «открывается чужой сайт»: домен ещё не описан, и его забирает сосед по серверу. Лечится явным блоком-заглушкой:
Но сначала уберите стандартный сайт Ubuntu: в нём уже стоит listen 80 default_server, и второй такой блок nginx -t не пропустит — «a duplicate default server for 0.0.0.0:80», при проверке 11.10.2026 так и было:
rm /etc/nginx/sites-enabled/defaultserver {
listen 80 default_server;
server_name _;
return 444;
}Сертификаты у каждого домена свои — Certbot выпускает их по одному и сам дописывает нужные строки в тот блок, где нашёл server_name.
Nginx перед приложением: обратный прокси
Отдавать файлы — только половина работы. Чаще Nginx ставят ПЕРЕД приложением: Node.js, Python, контейнером Docker. Приложение слушает локальный порт и наружу не смотрит, а Nginx принимает запросы из интернета, держит SSL и передаёт их дальше.
Так это выглядит для приложения на порту 3000:
server {
listen 80;
server_name pervyj.ru;
location / {
proxy_pass http://127.0.0.1:3000;
proxy_set_header Host $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
}
}Этот блок заменяет блок статического сайта pervyj.ru, а не ставится рядом: два блока с одним server_name nginx примет с предупреждением «conflicting server name … ignored» и один из них молча отбросит — какой, решит порядок файлов.
Зачем четыре строки с заголовками
Без них приложение видит все запросы как пришедшие с 127.0.0.1 и по протоколу http. Документация nginx (модуль ngx_http_proxy_module) показывает Host и X-Real-IP в самом базовом примере, остальные два заголовка добавляют, когда приложению нужен исходный адрес и понимание, что снаружи был HTTPS.
- Host — приложение узнаёт, какой домен запрашивали
- X-Real-IP — адрес посетителя, а не сервера
- X-Forwarded-For — цепочка адресов, если прокси не один
- X-Forwarded-Proto — был ли снаружи https; без него фреймворки строят ссылки на http
Приложение слушать наружу не должно
Порт приложения привязывают к 127.0.0.1, а не к 0.0.0.0. Иначе к нему можно постучаться напрямую по адресу сервера, минуя Nginx и его SSL. Проверить, что порт закрыт снаружи, можно с самого сервера:
ss -tlnp | grep 3000В выводе должно стоять 127.0.0.1:3000. Если там 0.0.0.0:3000 — правьте настройку приложения либо закрывайте порт файрволом.
Для контейнеров порядок тот же, только адресом служит имя сервиса в сети Docker. Подробности — в руководстве по Docker-хостингу.
Частые ошибки при настройке Nginx
Даже опытные администраторы допускают эти ошибки:
1. Не проверять конфигурацию перед перезагрузкой
Всегда запускайте проверку перед reload или restart. С опечаткой в конфиге restart уронит сайт, а reload просто не применит правку — Nginx продолжит работать на старой конфигурации:
nginx -t2. Забыть про firewall
Если порты 80 и 443 не открыты, сайт не будет доступен. Проверьте:
ufw status
# или
iptables -L3. Не настроить логирование
Без логов невозможно диагностировать проблемы. Настройте access_log и error_log для каждого виртуального хоста.
4. Игнорировать обновления безопасности
Регулярно обновляйте Nginx и ОС:
apt update && apt upgrade -y5. Не включить сжатие
Без gzip страницы загружаются медленнее. В Ubuntu строка gzip on; в /etc/nginx/nginx.conf уже есть — вторая такая в том же блоке http уронит проверку («"gzip" directive is duplicate»). Добавьте в блок http только типы файлов (там эта строка закомментирована):
gzip_types text/plain text/css application/json application/javascript text/xml;Проверка на сервере 11.10.2026: что ломается у новичка
Наш замер 11.10.2026. Команды этой инструкции выполнены по шагам на чистом сервере Timeweb Cloud: 2 vCPU, 2 ГБ памяти, Ubuntu 24.04.5, Nginx 1.24.0 из пакетов Ubuntu. Установка Nginx заняла 9 секунд, три процесса Nginx после настройки занимали 16 МБ памяти; файл в 3 000 байт после включения сжатия ушёл 49 байтами.
Четыре места, где инструкция в прежнем виде ломалась, — все исправлены выше:
- без каталога /var/www/your-site сайт отвечал 404;
- заглушка default_server рядом со стандартным сайтом Ubuntu — nginx -t с ошибкой «a duplicate default server»;
- «gzip on» в основном конфиге — ошибка «directive is duplicate»: в Ubuntu сжатие уже включено;
- прокси рядом с блоком сайта того же имени — предупреждение «conflicting server name», один блок отброшен.
Чего проверка не показывает: выпуск сертификата (шаг SSL) — для него нужен свой домен; работу под нагрузкой и с вашим приложением. Один сервер, один день.
Заключение и рекомендации
Правильно настроенный Nginx превращает даже бюджетный VPS в надёжный сервер для ваших проектов. Ключевые моменты:
- Включите HTTPS через Let's Encrypt — это бесплатно, а сайты на HTTP браузеры помечают как небезопасные
- Настройте gzip-сжатие и кэширование для ускорения загрузки
- Всегда проверяйте конфигурацию командой nginx -t перед применением изменений
- Настройте логирование для диагностики проблем
Выбрать VPS: каталог провайдеров. Подробнее о выборе: полное руководство по VPS 2026.
Связанные руководства
Docker хостинг — Nginx + Docker через обратный прокси
VPN-сервер WireGuard на VPS — VPN вместе с Nginx
Бэкап VPS — резервное копирование сервера
Как выбрать VPS хостинг 2026 — критерии выбора
Дешёвый VPS: сколько стоит на самом деле — бюджетные серверы
Реклама · ООО «Админвпс»
AdminVPS — сервер под Nginx: Promo за 499 ₽/мес при оплате за месяц
Promo — 499 ₽/мес при оплате за месяц: 1 vCPU 3,6 ГГц, 2 ГБ RAM, 30 ГБ NVMe, канал 1 Гбит/с, еженедельные копии в тарифе; по промокоду EASYLINK первый месяц 199,60 ₽. Под рабочий сайт берите Micro за 899 ₽/мес при оплате за месяц: 4 ГБ RAM. Настройку Nginx и SSL за вас возьмут в линейке «Всё включено» — она дороже обычных тарифов.
Реклама · АО «ТаймВэб»
Timeweb Cloud — Nginx Proxy Manager и панели в маркетплейсе
Двадцать площадок в девяти странах; в маркетплейсе — Nginx Proxy Manager и образы с панелями ispmanager, FASTPANEL и HestiaCP. Младший тариф Cloud MSK 40 — 1 000 ₽/мес при оплате за месяц или 900 ₽/мес при оплате за 12 месяцев; списание почасовое.
Частые вопросы
Сколько ОЗУ нужно для Nginx на VPS?
Самому Nginx памяти нужно немного; объём сервера задают ОС и то, что стоит за Nginx, — PHP-FPM, приложение, база. Для статического сайта хватит тарифа с 1 ГБ RAM, для PHP и приложений берите больше: сколько, решает само приложение.
Чем Nginx лучше Apache для VPS?
Nginx использует событийно-ориентированную архитектуру (async, non-blocking), что позволяет обрабатывать тысячи одновременных соединений при минимальном расходе памяти. Apache в режиме prefork, напротив, держит отдельный процесс на каждое соединение — отсюда разница в памяти при большом числе посетителей.
Как получить бесплатный SSL для Nginx?
Используйте Let's Encrypt с утилитой certbot. Установка: sudo apt install certbot python3-certbot-nginx -y. Получение сертификата: sudo certbot --nginx -d example.com. Сертификаты сейчас действуют 90 дней и продлеваются автоматически: задание продления ставит пакет certbot.
Как проверить, что Nginx работает правильно?
Используйте nginx -t для проверки синтаксиса конфигурации, systemctl status nginx для проверки статуса службы, ss -tlnp | grep nginx для проверки открытых портов, curl -I http://localhost для тестового HTTP-запроса. Логи ошибок: tail -f /var/log/nginx/error.log.
Можно ли запустить Nginx и Apache одновременно?
Да, но они не могут слушать один порт на одном IP. Стандартная схема: Nginx на портах 80/443 как reverse proxy, Apache на порту 8080 для динамики. Nginx отдаёт статику напрямую, а динамические запросы проксирует на Apache через proxy_pass.
Выберите VPS для Nginx
Сравнить VPS-тарифыСтатья содержит партнёрские ссылки. Мы получаем комиссию при переходе, это не влияет на цену для вас и помогает развивать проект. Подробнее