Nginx Proxy Manager — вебпанель, яка налаштовує Nginx як reverse proxy і сама отримує сертифікати. Вона потрібна, коли конфіги хочеться налаштовувати мишею, а не правити текстові файли руками.
Що таке reverse proxy коротко
Reverse proxy приймає запит на одному домені й порті, а потім передає його потрібному серверу усередині мережі, ховаючи його реальну адресу. Якщо потрібен сам конфіг із директивами, подробиці зібрані у статті про reverse proxy у Nginx.
NPM, конфіги руками і Traefik
Усі три підходи вирішують одне завдання по-різному, і вибір залежить від того, скільки правил і як часто вони змінюються.
| Критерій | NPM | Конфіги руками | Traefik |
|---|---|---|---|
| Що налаштовується | через вебпанель | текстовими файлами конфіга | мітками контейнерів або файлами |
| Хто отримує сертифікати | панель сама | окремий клієнт, який ви налаштовуєте | сам Traefik за мітками |
| Де зберігається стан | у власній базі панелі | у текстових файлах конфіга | у конфізі та мітках контейнерів |
| Кому підходить | тим, хто не хоче правити конфіг руками | тим, кому потрібен повний контроль | тим, у кого багато контейнерів і часті зміни |
Про окремий підхід із мітками контейнерів розказано у статті про Traefik.
Встановлення панелі контейнером
Панель ставлять через контейнер, із портами для вебтрафіку і окремим портом для входу у саму панель, а також із томами для даних і сертифікатів.
services:
app:
image: jc21/nginx-proxy-manager:latest
restart: unless-stopped
ports:
- '80:80'
- '443:443'
- '81:81'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Перший вхід і зміна даних адміністратора
Після запуску панель відкривається на порту входу, і першим ділом варто зайти зі стандартними даними адміністратора і одразу змінити і пошту, і пароль — це найчастіша помилка під час встановлення панелі.
Перший proxy host за кроками
- Вкажіть домен, для якого працюватиме proxy host.
- Вкажіть адресу і порт сервера, куди панель має передавати запити.
- Увімкніть видачу SSL-сертифіката для вказаного домену.
- Увімкніть перенаправлення зі звичайного HTTP на захищене з'єднання.
Що ламається найчастіше
| Проблема | Ймовірна причина | Що перевірити |
|---|---|---|
| Сертифікат не видається | порт для підтвердження зайнятий або домен не вказує на сервер | доступність порту назовні і запис домену |
| Бекенд недоступний | вказано адресу контейнера замість адреси, видимої панелі | адресу і порт бекенда у налаштуваннях proxy host |
| WebSocket не працює | у налаштуваннях proxy host не увімкнена підтримка WebSocket | перемикач підтримки WebSocket у цього proxy host |
| Панель відкрита назовні | порт входу в панель доступний усім, а не лише адміністратору | обмеження доступу до порту панелі |
Коли NPM не підходить
Панель незручна, коли правил стає багато і в них важко розібратися через інтерфейс, коли потрібні нестандартні директиви, яких немає у панелі, або коли конфіг має лежати у системі контролю версій разом з рештою коду.