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