Домашня лабораторія та власний сервер

Кілька сервісів за одним сервером з 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)

Коментарі 0

Залиште перший коментар будь-якою мовою.

Увійдіть, щоб коментувати