Files
configure_nginx_manager/wiki/Nginx_Proxy_Manager.md
Dmitriy Fofanov 491db2d5bf
Синхронизация Wiki / Синхронизация Wiki (push) Successful in 2s
Исправлены опечатки и улучшена читаемость документации
2026-02-25 07:54:18 +03:00

11 KiB
Raw Blame History

Интеграция с 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.