6
Nginx_Proxy_Manager
dfgit-actions[bot] edited this page 2026-02-25 07:55:32 +03:00
This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

Интеграция с Nginx Proxy Manager (NPM)

Проект умеет автоматически загружать (или обновлять) сертификаты в NPM через его API.

Включение

В конфиге:

  • npm_enabled: true
  • npm_host: например http://192.0.2.1:81
  • npm_email, npm_password

После этого:

  • --obtain, --renew, --auto, --test-cert будут пытаться синхронизировать сертификат в NPM.

Как работает синхронизация

  1. Скрипт логинится в NPM (/api/tokens)
  2. Получает список сертификатов
  3. Ищет сертификат по домену (учитывает <domain> и *.<domain>)
  4. Если найден — обновляет, иначе — загружает новый

Про “дубликаты” сертификатов

Иногда NPM сразу после загрузки ещё не распарсил домены (поле domain_names пустое). Скрипт дополнительно пытается сопоставлять по nice_name, чтобы не плодить дубли.

Команда для диагностики:

  • --list-npm — показывает сертификаты и подсвечивает дубликаты
  • --delete-npm <ID> — удаляет сертификат по ID

Ручная загрузка существующего сертификата

  • --upload-npm <DOMAIN>

Скрипт возьмёт fullchain.pem и privkey.pem из cert_dir/<DOMAIN>/ и загрузит/обновит сертификат в NPM.

Один wildcard сертификат на много поддоменов

Практический сценарий:

  • Получить сертификат на example.com + *.example.com
  • В NPM импортировать/использовать этот сертификат для всех Proxy Hosts

Обратите внимание:

  • для wildcard Lets Encrypt нужен DNS-01 challenge
  • в NPM можно использовать либо встроенный Lets Encrypt, либо этот проект как внешний менеджер и синхронизатор

Пошагово: использовать один wildcard сертификат для всех Proxy Hosts

Ниже — практический сценарий, когда вам нужен один сертификат (например, *.example.com) и вы хотите назначать его на все хосты.

Вариант A: сертификат выдаёт этот проект (рекомендуется при reg.ru DNS-01)

  1. Убедитесь, что DNS API reg.ru работает:
  • letsencrypt-regru --test-api -v
  • letsencrypt-regru --test-dns -v
  1. Получите production сертификат:
  • letsencrypt-regru --obtain
  1. Если npm_enabled=true, сертификат автоматически появится в NPM.

  2. В NPM:

  • Proxy Hosts → Add/Edit Proxy Host
  • SSL → выберите сертификат (обычно “Custom/Other”)
  • включите нужные опции (Force SSL, HSTS по необходимости)

Вариант B: сертификат выдаёт сам NPM

Этот вариант подходит, если NPM может сам пройти challenge.

  1. SSL Certificates → Add SSL Certificate → Lets Encrypt
  2. Domain Names: добавьте example.com и *.example.com
  3. Выберите challenge:
  • HTTP-01: требует доступности NPM из интернета по 80/443 и корректных A/AAAA записей
  • DNS-01: требует поддерживаемого DNS provider в NPM

Если нужного DNS провайдера нет (или нет корректной интеграции для reg.ru), проще использовать этот проект как внешний DNS-01 менеджер.

Вариант C: импорт уже существующего wildcard сертификата (Custom)

Если вы приобрели wildcard сертификат у CA или получили его другим способом:

  1. SSL Certificates → Add SSL Certificate → Custom
  2. Вставьте:
  • Certificate: сертификат + intermediate chain (если отдельно — добавьте подряд)
  • Key: приватный ключ
  1. Сохраните и назначайте этот сертификат на Proxy Hosts.

DNS записи для wildcard

Для проксирования поддоменов часто достаточно, чтобы DNS указывал на NPM:

  • example.com → IP NPM
  • *.example.com → IP NPM

Точная схема зависит от вашей инфраструктуры.

Траблшутинг

  • “не логинится” → проверьте npm_host (http/https), креды, доступность
  • “сертификат не появился” → проверьте npm_enabled, логи скрипта
  • staging сертификаты: не предназначены для production (браузер не доверяет)

Appendix (migrated from: Настройке Nginx Manager с SSL)

Подробная инструкция по настройке Nginx Proxy Manager с одним глобальным SSL сертификатом для всех доменов example.com

Предпосылки

  • Установлен и запущен Nginx Proxy Manager
  • Основной домен: example.com
  • Хостинг и DNS записи домена находятся на reg.ru
  • Нужно использовать один SSL сертификат (например, wildcard) для всех поддоменов example.com

Шаг 1. Покупка и получение SSL Wildcard сертификата для example.com

  1. На reg.ru или любом другом удостоверяющем центре (CA) закажите wildcard сертификат на домен вида *.example.com.
  2. Получите файлы сертификата:
    • Главный сертификат (CRT)
    • Промежуточные сертификаты (CA Bundle)
    • Приватный ключ (KEY)

Шаг 2. Импорт вашего SSL сертификата в Nginx Proxy Manager

  1. Авторизуйтесь в Nginx Proxy Manager на http://192.0.2.1:81/
  2. Перейдите в раздел SSL Certificates → кнопку Add SSL Certificate
  3. Выберите Custom (пользовательский сертификат)
  4. В поля вставьте:
    • Certificate — основной CRT + CA Bundle (если CA Bundle раздельно, склейте в один файл или вставляйте последовательно)
    • Key — содержимое приватного ключа
    • Имя сертификата задайте, например, dfv24_wildcard
  5. Сохраните

Шаг 3. Настройка прокси-хостов с использованием глобального сертификата

  1. Перейдите в Proxy HostsAdd Proxy Host

  2. Заполните поля:

    • Domain Names: Например, sub1.example.com (для первого поддомена)
    • Scheme: http или https, в зависимости от бекенда
    • Forward Hostname / IP: IP или DNS адрес вашего внутреннего сервиса
    • Forward Port: порт сервиса (например, 80 или 443)
  3. Включите SSL → Отметьте Use a shared SSL certificate (если такая опция доступна) или выберите ранее импортированный сертификат из списка

  4. Активируйте: Block Common Exploits, Websockets Support, выставьте Redirect HTTP to HTTPS, если требуется

  5. Сохраните прокси-хост

  6. Повторите для всех поддоменов, указывая нужные домены и выбирая тот же wildcard SSL сертификат


Шаг 4. Настройка DNS записей на reg.ru

  1. Войдите в панель управления доменом на reg.ru
  2. Создайте или отредактируйте DNS записи типа A:
    • example.com → IP вашего Nginx Proxy Manager (например, 192.0.2.1)
    • *.example.com → тот же IP или конкретные поддомены, если есть специальные
  3. Сохраните изменения
  4. Дождитесь обновления DNS (от нескольких минут до 24 часов)

Шаг 5. Тест и проверка работы

  1. В браузере откройте любой из поддоменов https://sub1.example.com
  2. Сертификат должен быть валидным, выданным на wildcard *.example.com
  3. Проверьте работу прокси и корректность подстановки сертификата
  4. При необходимости проверьте логи Nginx Proxy Manager и исправьте ошибки

Дополнительно

  • Если в Nginx Proxy Manager нет GUI опции выбора общего сертификата, можно вручную сконфигурировать конфиги через директорий /data/nginx/proxy_host и прописать SSL сертификат для всех хостов.
  • При обновлении сертификата — повторно импортировать его в Nginx Proxy Manager.
  • Можно использовать LetsEncrypt для автоматического получения wildcard сертификата с помощью DNS валидации (если поддерживается вашим DNS провайдером).

Итог

Используйте один wildcard сертификат для всех поддоменов, импортируйте его как пользовательский сертификат в Nginx Proxy Manager, при создании прокси-хостов выбирайте его в настройках SSL. Управляйте DNS записями на reg.ru, направляя домен на IP Nginx Proxy Manager.
Это позволит юридически использовать единый сертификат для всех сервисов с различными поддоменами под вашим доменом example.com.