Как настроить авторизацию в Nginx Proxy Manager

Как настроить авторизацию в Nginx Proxy Manager

Введение

Nginx Proxy Manager (NPM) — это бесплатный open-source инструмент с веб-интерфейсом, который кардинально упрощает работу с обратным прокси на базе Nginx. Вместо ручного редактирования десятков конфигурационных файлов вы управляете прокси-правилами, доменами и SSL-сертификатами через удобную панель в браузере. Однако, вынос внутренних сервисов в сеть требует тщательной защиты. Поэтому умение настроить авторизацию nginx proxy является критически важным навыком для обеспечения безопасности инфраструктуры.

Основные механизмы защиты

В NPM реализованы два основных способа контроля доступа, которые покрывают 99% сценариев использования. Это встроенные «Access Lists» (Списки доступа). Они позволяют гибко комбинировать методы аутентификации и фильтрации.

1. Базовая авторизация (Basic Auth): Браузер запрашивает логин и пароль при каждом обращении к ресурсу. Это стандартный механизм HTTP, который надежно защищает панели управления и административные интерфейсы.
2. Ограничение по IP-адресам: Вы можете разрешить доступ только с определенных IP-адресов или подсетей. Это идеальный вариант для сервисов, к которым нужно обращаться только из доверенной домашней или офисной сети.

Пошаговая настройка Basic Auth

Чтобы защитить ваш сервис, выполните следующие действия в веб-интерфейсе Nginx Proxy Manager:

1. Перейдите в раздел Access Lists и нажмите кнопку Add Access List.
2. Введите имя списка (например, «Admin Protection»).
3. В разделе Authentication нажмите Add и создайте нового пользователя, указав надежный логин и сложный пароль.
4. Сохраните список.
5. Теперь откройте настройки нужного Proxy Host.
6. На вкладке Access Lists выберите созданный список из выпадающего меню.
7. Нажмите Save.

После этого любой запрос к домену будет блокироваться до ввода корректных учетных данных.

Настройка ограничения по IP

Для сценариев, где авторизация не нужна, но доступ должен быть ограничен, используется фильтрация IP. Процесс аналогичен:

1. Создайте новый Access List.
2. В поле Allowed IP Addresses перечислите доверенные адреса через запятую (например, 192.168.1.50, 10.0.0.0/24).
3. Назначьте этот список Proxy Host.

Сравнение методов

Метод Удобство Безопасность Рекомендуемый сценарий
Basic Auth Высокое Среднее (требует HTTPS) Доступ из разных мест, защита админок
IP Restriction Низкое Высокое Доступ только из офиса или прописанного IP

Продвинутая конфигурация

В редких случаях, когда штатных средств недостаточно, можно использовать «Custom Locations» для внедрения сложных правил Nginx. Например, для защиты конкретного пути с использованием стороннего файла паролей:


location /secret {
    auth_basic "Restricted Area";
    auth_basic_user_file /etc/nginx/.htpasswd;
    proxy_pass http://backend:8080;
}

Однако, в большинстве случаев функционала NPM достаточно, чтобы надежно настроить авторизацию nginx proxy без вмешательства в базовые конфигурации.

Вопрос-ответ (FAQ)

Можно ли использовать Basic Auth без HTTPS?

Технически можно, но это крайне небезопасно. Пароль передается в заголовке Authorization в кодировке Base64, которую легко декодировать. NPM автоматически предоставляет SSL-сертификаты, поэтому всегда используйте HTTPS.

Как сбросить пароль, если забыли данные от Access List?

Данные хранятся в базе SQLite внутри контейнера. Можно зайти в контейнер через консоль (docker exec) и выполнить SQL-запрос для обновления хеша пароля, либо просто удалить и пересоздать список доступа, если это не критично.

Влияет ли включение авторизации на производительность?

Нет, проверка учетных данных происходит на уровне Nginx и потребляет минимальные ресурсы процессора, что незаметно для пользователя.

Обсуждение закрыто.