Установка и настройка Nginx на VPS как обратного прокси: коротко и с данными

Конспект страницы: 6 разделов коротко, данные на 14 октября 2026 и ответы на 4 вопроса. Полный разбор с примерами: Установка и настройка Nginx на VPS как обратного прокси.

Коротко

Установка Nginx на Ubuntu или Debian занимает одну команду apt, а работа начинается после неё: настроить его как обратный прокси, то есть сервер, который принимает запросы из интернета и передаёт их приложению на локальном порту. Ниже рабочий конфиг для контейнера на 127.0.0.1, подключение HTTPS и разбор ошибок 502, 504 и 413. Nginx берут, когда рядом с прокси нужна раздача статики или PHP, а конфиг уже знаком.

Конспект по разделам

Установка Nginx на Ubuntu и Debian: пакет, служба и файрвол

В Debian и Ubuntu конфиги сайтов хранят в /etc/nginx/sites-available/, а включают символической ссылкой в /etc/nginx/sites-enabled/. Версия в репозитории дистрибутива может отставать, свежие ветки stable и mainline ставят из репозитория nginx.org. Если конфиги не хочется править руками, в маркетплейсе Таймвеб Клауд есть Nginx Proxy Manager (156 установок на 14 октября 2026): веб-интерфейс над Nginx в Docker, где домены и сертификаты Let's Encrypt добавляют кнопками.

Конфиг Nginx для контейнера на localhost: proxy_pass и заголовки

Контейнер публикуют только на локальном адресе, -p 127.0.0.1:3000:3000, чтобы приложение было доступно через Nginx, а не напрямую. Файл /etc/nginx/conf.d/websocket.conf объявляет переменную для WebSocket, сайт лежит в sites-available: В документации текущей версии умолчанием у proxy_http_version названа 1.1, в старых сборках было 1.0, поэтому строку оставляют явно. Nginx в самом контейнере читает файлы из /etc/nginx/conf.d/: смонтируйте каталог с конфигами в сервис образа nginx, а в proxy_pass пишите имя сервиса приложения.

HTTPS для Nginx: сертификат от Certbot одной командой

Когда сайт открывается по HTTP, включите сертификат: sudo certbot --nginx -d app.example.com. Certbot допишет в ваш блок server порт 443, пути к сертификату и переадресацию с HTTP. Установка, продление и ошибки выпуска разобраны на странице установка Certbot.

Ошибки Nginx за прокси: 502, 504, 413 и неверный Host

Неочевидная ловушка с Host: без своей строки Nginx отправляет приложению заголовок со значением из proxy_pass, то есть 127.0.0.1:3000. Приложение строит ссылки на этот адрес, а почтовые письма и OAuth-переходы ведут в пустоту. Точную причину ищите в журнале, а подсказка ниже сверит строку с готовым действием.

Балансировщик нагрузки Nginx: upstream на два контейнера

Блок upstream превращает Nginx в простой балансировщик: запросы чередуются между серверами по кругу. Для приложений без общего состояния добавляйте строку least_conn;, чтобы новый запрос шёл на менее занятую копию. Затем в location пишут proxy_pass http://app_pool;.

Запустите свой сервер за пару минут

Почасовая оплата: тестовый стенд на сутки стоит десятки рублей, а не месячный тариф.

Данные

ЗадачаКоманда
Проверить конфигsudo nginx -t
Применить без остановкиsudo systemctl reload nginx
Перезапуститьsudo systemctl restart nginx
Остановить и не поднимать после перезагрузкиsudo systemctl disable --now nginx
ЗаголовокЗачем
HostПриложение видит домен, который ввёл посетитель, и строит правильные ссылки
X-Real-IP и X-Forwarded-ForЖурнал приложения показывает адрес посетителя, а не 127.0.0.1
X-Forwarded-ProtoПриложение знает, что снаружи был HTTPS, и не зацикливает переадресацию
Upgrade и ConnectionПропускают WebSocket, на которых работают панели и чаты

Данные на 14 октября 2026.

Вопросы и ответы

Как перезапустить Nginx на сервере, не уронив сайты?

Сначала проверьте конфиг командой nginx -t, затем выполните systemctl reload nginx: рабочие процессы заменятся плавно. Полный restart обрывает текущие соединения и нужен после обновления пакета.

Как остановить Nginx на сервере, чтобы освободить порт 80?

Команда sudo systemctl stop nginx остановит службу, а disable уберёт её из автозапуска. Проверьте, что порт свободен, командой ss -tlnp.

Можно ли запустить два Nginx на одном сервере?

Да. Один слушает 80 и 443 и проксирует запросы, второй, например в Docker, занимает порт 8080 на локальном адресе. Два процесса на одном порту не запустятся.

Как развернуть Nginx на своём сервере с нуля?

Создайте сервер с Ubuntu, поставьте пакет nginx, откройте порты 80 и 443, добавьте блок server с proxy_pass на приложение и выпустите сертификат через Certbot.