VPS · веб-приложения

Nginx на VPS: обратный прокси к приложению и разбор ошибки 502

Проверьте приложение на VPS через localhost, направьте запросы через Nginx и отличите ошибку upstream от DNS и брандмауэра.

Обратный прокси принимает запрос к сайту и передаёт его вашему приложению. Для приложения на той же VPS обычно достаточно слушать 127.0.0.1:3000; наружу открывают вход Nginx, а не служебный порт приложения. Ниже предполагается, что Nginx уже установлен, а домен и HTTPS настроены для вашего сайта.

Синий вычислительный модуль — собственная виртуальная машина.

Как подключить локальное приложение к Nginx

  1. Проверьте upstream внутри машины

    В SSH выполните curl -I http://127.0.0.1:3000 и ss -lnt. Подставьте реальный порт приложения. Если маршрут не поддерживает HEAD, используйте обычный GET к безопасной странице состояния. Connection refused означает, что на адресе нет доступного слушателя: сначала исправьте запуск приложения, затем настраивайте прокси.

  2. Измените нужный server-блок

    Сохраните копию конфигурации сайта. В существующем HTTPS-блоке server добавьте или измените location /: внутри него задайте proxy_pass http://127.0.0.1:3000; и proxy_set_header Host $host;. Это пример для приложения, ожидающего исходный путь запроса. Слэш и дополнительный путь после порта меняют правила передачи URI, поэтому сверяйте их с маршрутизацией проекта.

  3. Проверьте файл до применения

    Выполните sudo nginx -t; эта команда доступна после установки Nginx и проверяет его конфигурацию. Только после успешной проверки примените sudo systemctl reload nginx. Не удаляйте рабочий server-блок и не перезапускайте всю VPS ради одной настройки маршрута. Если проверка не проходит, исправьте указанную строку или верните копию.

После reload откройте домен извне и выполните контрольный запрос к безопасному маршруту. Ответ 502 от Nginx означает, что запрос дошёл до прокси, но тот не получил корректный ответ upstream. Смотрите error_log соответствующего сайта и журнал приложения: проверьте порт, адрес, протокол и сообщения о завершении процесса. Для HTTPS-upstream настройте доверие к его сертификату и проверку сертификата, а не отключайте TLS-проверку.

Рабочий результат — сайт отвечает по своему HTTPS-домену, приложение доступно прокси локально, а его внутренний порт не требуется открывать всем. При правке брандмауэра сохраняйте правило SSH и действующий сеанс. В панели VPS нет кнопки, которая сама создаёт Nginx-конфигурацию или сертификат: эти настройки выполняются внутри установленной системы.

Читайте дальше

VPS

Что такое VPS и чем она отличается от игрового сервера

Что такое VPS простыми словами: машина с чистой системой и полными правами, программы на неё вы ставите сами. Что панель у неё умеет, чего нет и зачем её берут.

VPS · вход

Первый вход на машину по SSH

Как зайти на VPS по SSH с Windows, macOS или Linux: где панель показывает имя пользователя и адрес, откуда берётся пароль и почему ключ добавляют до заказа.

VPS · тариф

Сколько нужно ядер, памяти и диска

Сколько ресурсов нужно вашей VPS: что такое vCPU, память и диск на примерах бота, небольшого сайта и базы, и как увидеть в панели, чего машине не хватает.

VPS · разбор

Машина не отвечает: что проверить

Что делать, если VPS не отвечает: состояние в панели, консоль вместо SSH, перезагрузка и переустановка — по порядку, от безопасного к необратимому.

VPS · сеть

Порты: как открыть доступ к своей программе

Как открыть порт на VPS, чтобы программу стало видно снаружи: где доступ закрыт на самом деле и чем это отличается от игрового сервера, которому порт даёт панель.

VPS · данные

Снимки и резервные копии: в чём разница

Чем снимок VPS отличается от резервной копии: снимок лежит на той же ноде и вместе с ней теряется. Когда он выручает, когда бесполезен и что считать копией.

VPS · безопасность

Как защитить VPS своими руками

Как защитить свой VPS в первый же день: обновления, вход по ключу вместо пароля, права администратора на одну команду и признаки того, что вы на машине не одни.

VPS · автозапуск

Как запускать своё приложение на VPS через systemd

Создайте службу приложения на VPS, задайте пользователя и каталог, включите автозапуск и проверьте журнал процесса.

VPS · доверие SSH

SSH пишет REMOTE HOST IDENTIFICATION HAS CHANGED: что проверить

Сверьте новый ключ машины через консоль панели и обновите только нужную запись known_hosts после подтверждённой переустановки.