Домашняя лаборатория и свой сервер
Nginx Proxy Manager: несколько сервисов за одним сервером
Если на одном сервере живёт больше одного проекта, рано или поздно упираешься в порты 80 и 443: слушать их может только один процесс. Статья в блоге Selectel на Хабре показывает, как решить это с помощью Nginx Proxy Manager, и разбирает всё по шагам.
Автор сначала объясняет проблему: привилегированные порты, ограничение «один порт — один слушатель», CORS при разнесении фронтенда и бэкенда по портам, отсутствие HTTPS. Обратный прокси решает это как посредник, маршрутизируя трафик по доменам и путям. Дополнительный плюс: в файрволе достаточно открыть порты 22, 80 и 443.
Стенд простой: VDS с 2 vCPU, 2 ГБ RAM и 40 ГБ NVMe, Ubuntu 24.04 и Docker из официального репозитория. Создаётся сеть командой docker network create proxy, затем запускается контейнер jc21/nginx-proxy-manager с томами для данных и сертификатов. Мне понравилось, что порт 81 с админкой привязан только к 127.0.0.1, а доступ идёт через SSH-туннель.
Дальше настраивается прокси-хост: в поле Forward Hostname указывается имя контейнера, а SSL-сертификат привязывается на вкладке SSL. Для проверки используется traefik/whoami. Отдельно разобран случай, когда приложение работает прямо на хосте: адрес шлюза Docker-сети получают через docker network inspect, а фаервол настраивают так, чтобы приложение не было доступно в обход прокси.
Есть и замечания: в примерах смешаны разные домены, а образ взят с тегом latest, так что воспроизводимость со временем может пострадать. В остальном это хорошая отправная точка для тех, кто хочет держать несколько сервисов дома или на VDS без ручного редактирования конфигов nginx.
Источник: Хабр (блог Selectel)
Автор сначала объясняет проблему: привилегированные порты, ограничение «один порт — один слушатель», CORS при разнесении фронтенда и бэкенда по портам, отсутствие HTTPS. Обратный прокси решает это как посредник, маршрутизируя трафик по доменам и путям. Дополнительный плюс: в файрволе достаточно открыть порты 22, 80 и 443.
Стенд простой: VDS с 2 vCPU, 2 ГБ RAM и 40 ГБ NVMe, Ubuntu 24.04 и Docker из официального репозитория. Создаётся сеть командой docker network create proxy, затем запускается контейнер jc21/nginx-proxy-manager с томами для данных и сертификатов. Мне понравилось, что порт 81 с админкой привязан только к 127.0.0.1, а доступ идёт через SSH-туннель.
Дальше настраивается прокси-хост: в поле Forward Hostname указывается имя контейнера, а SSL-сертификат привязывается на вкладке SSL. Для проверки используется traefik/whoami. Отдельно разобран случай, когда приложение работает прямо на хосте: адрес шлюза Docker-сети получают через docker network inspect, а фаервол настраивают так, чтобы приложение не было доступно в обход прокси.
Есть и замечания: в примерах смешаны разные домены, а образ взят с тегом latest, так что воспроизводимость со временем может пострадать. В остальном это хорошая отправная точка для тех, кто хочет держать несколько сервисов дома или на VDS без ручного редактирования конфигов nginx.
Источник: Хабр (блог Selectel)
Комментарии 0
Оставьте первый комментарий на любом языке.
Войдите, чтобы комментировать