Введение
Nginx Proxy Manager (NPM) — это готовый Docker-контейнер, предоставляющий удобный веб-интерфейс для развёртывания обратного прокси-сервера с автоматической терминацией TLS. В отличие от ручной работы с конфигурационными файлами, NPM абстрагирует сложность маршрутизации, позволяя быстро развернуть безопасный шлюз для домашних или корпоративных сервисов. Главная задача администратора — правильно настроить SSL через Nginx Proxy, чтобы обеспечить шифрование трафика и корректную обработку HTTP-запросов.
Настройка SSL
Для получения SSL-сертификата рекомендуется использовать Let’s Encrypt через встроенный механизм автоматического обновления. В интерфейсе NPM перейдите в раздел Hosts, выберите нужный домен и во вкладке SSL отметьте опцию «Request a new SSL/Host Certificate». Укажите email для уведомлений, выберите поставщика сертификатов и сохраните. NPM самостоятельно выполнит HTTP-челлендж, если порт 80/443 проброшен в контейнер. Важно: перед настройкой убедитесь, что DNS-записи указывают на IP-адрес сервера, а фаервол не блокирует входящие соединения. Для оптимизации безопасности включите HSTS, OCSP Stapling и используйте современные протоколы TLS 1.2/1.3. NPM автоматически управляет ротацией ключей и предупреждает за 30 дней до истечения срока действия.
Конфигурация редиректов
Управление редиректами в NPM происходит через вкладку «Advanced» или «Custom Nginx Configuration». Для принудительного перенаправления HTTP на HTTPS достаточно активировать опцию «Force SSL». Если требуется более гибкая логика, используйте встроенные поля «Redirect URLs» или добавьте кастомные правила. NPM генерирует конфигурацию на лету, компилируя UI-параметры в стандартные директивы Nginx. При работе с редиректами учитывайте коды состояний: 301 для постоянного переноса и 302/307 для временных переходов. Не забывайте про обработку заголовков X-Forwarded-For и X-Real-IP, чтобы бэкенд-сервисы корректно определяли реальный IP клиента.
| Тип перенаправления | Код ответа | Сценарий применения |
|---|---|---|
| Постоянный (301) | 301 | Изменение структуры URL, перенос домена |
| Временный (302/307) | 302/307 | Технические работы, A/B тесты |
| Принудительный HTTPS | 301 | Безопасность, шифрование трафика |
| Wildcards | 301 | Массовое перенаправление поддоменов |
# Пример кастомной конфигурации для редиректа и SSL
if ($scheme = http) {
return 301 https://$host$request_uri;
}
location /old-path {
return 301 /new-path;
}
ssl_protocols TLSv1.2 TLSv1.3;
ssl_ciphers HIGH:!aNULL:!MD5;
ssl_prefer_server_ciphers on;
Вопрос-ответ (FAQ)
Почему NPM не может получить сертификат?
Обычно это связано с блокировкой портов 80/443 фаерволом, отсутствием корректных DNS-записей или превышением лимитов запросов Let’s Encrypt. Убедитесь, что порт проброшен в Docker и домен резолвится в публичный IP.
Как добавить свой самоподписанный сертификат?
В разделе Hosts во вкладке SSL выберите «Self Signed» или загрузите файлы .crt и .key через интерфейс. Самоподписанные сертификаты подходят для локальных тестов, но браузеры будут выводить предупреждения о безопасности.
Влияет ли NPM на производительность бэкенда?
При правильной настройке keepalive-соединений и кэширования заголовков оверхед составляет менее 2-3%. NPM работает как легковесный шлюз, разгружая приложения от задач маршрутизации и терминации SSL.
Comments are closed.