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 не подходит
Панель неудобна, когда правил становится много и в них трудно разобраться через интерфейс, когда нужны нестандартные директивы, которых нет в панели, или когда конфиг обязан лежать в системе контроля версий вместе с остальным кодом.