Nginx Proxy Manager: обратный прокси с веб-интерфейсом

Если вы когда-либо пытались поднять несколько веб-сервисов на одном сервере (даже дома на мини-ПК или VPS), то наверняка сталкивались с задачей: как удобно и безопасно «разруливать» входящие запросы на разные приложения? Традиционный способ — писать конфиги для Nginx или Apache вручную, а потом еще помнить, где какой SSL, какие прокси-хедеры, где что сломалось… Короче, боль и страдания. Особенно если хочется быстро, просто и с минимумом ручного шаманства.

Вот тут-то и появляется Nginx Proxy Manager — штука, которая позволяет управлять обратным прокси через удобный веб-интерфейс. Без ssh, vi и чтения мануалов на ночь. Давайте разберёмся, как это работает, зачем оно нужно и как поставить всё за 10 минут.

Возможности

  • Веб-интерфейс для настройки обратного прокси на базе Nginx
  • Поддержка SSL (Let’s Encrypt — автоматом, с автообновлением!)
  • Управление редиректами, доступом, аутентификацией
  • Логи, статистика, быстрый просмотр ошибок
  • Бэкапы, импорт/экспорт конфигов
  • Работает с Docker (очень удобно для dev/test/prod)

Что требуется (требования, ос, железо)

  • Любая современная ОС с поддержкой Docker (Linux, Windows, MacOS)
  • Железо: хватит даже Raspberry Pi 3/4, но лучше что-то с 1+ ГБ RAM
  • Открытые порты 80 и 443 (для Let’s Encrypt и внешнего доступа)
  • Docker и Docker Compose (желательно свежие версии)

Установка — пошаговая инструкция

  1. Устанавливаем Docker и Docker Compose.
    На Ubuntu:

    sudo apt update
    sudo apt install docker.io docker-compose -y
    sudo systemctl enable --now docker
  2. Создаём папку для Nginx Proxy Manager.
    mkdir ~/nginx-proxy-manager
    cd ~/nginx-proxy-manager
  3. Создаём docker-compose.yml:
    cat > docker-compose.yml <<EOF
    version: '3'
    services:
      app:
        image: 'jc21/nginx-proxy-manager:latest'
        restart: unless-stopped
        ports:
          - '80:80'
          - '81:81'
          - '443:443'
        environment:
          DB_SQLITE_FILE: "/data/database.sqlite"
        volumes:
          - ./data:/data
          - ./letsencrypt:/etc/letsencrypt
    EOF

    (Если хотите использовать MySQL — смотрите официальную документацию)

  4. Запускаем контейнер:
    docker-compose up -d
  5. Проверяем, что всё работает.
    Открываем браузер: http://your-server-ip:81
    Логин по умолчанию:
    Email: admin@example.com
    Пароль: changeme
    (После первого входа смените пароль!)

Использование: команды, варианты, фишки

  • Добавление нового прокси-хоста:
    1. В веб-интерфейсе жмём «Proxy Hosts» → «Add Proxy Host»
    2. Вводим домен (например, myapp.mydomain.com)
    3. Указываем внутренний адрес и порт (например, 172.17.0.1:8080 или app:8000 если сервис в Docker)
    4. Ставим галочку «Block Common Exploits»
    5. Переходим на вкладку SSL, выбираем «Request a new SSL Certificate», соглашаемся на Terms of Service
    6. Сохраняем — NPM сам получит сертификат и настроит проксирование
  • Редиректы и 404: Можно настроить Redirect Hosts для перенаправления с одного домена на другой или на https.
  • Access Lists: Ограничение доступа по IP, Basic Auth — всё через GUI.
  • Custom Nginx config: В каждом прокси-хосте можно добавить свои директивы (например, для WebSocket, CORS и т.д.).
  • Бэкапы: Копируйте папку ./data — там всё, включая базу и настройки.
  • Команды управления контейнером:
    docker-compose up -d      # запуск
    docker-compose down       # остановка
    docker-compose logs -f    # смотреть логи
    docker-compose restart    # перезапуск

Ошибки и как делать не надо

  • Не открывайте порт 81 наружу! Это порт админки, ограничьте его фаерволом или через VPN.
  • Не храните пароли по умолчанию и не используйте «admin@example.com» — поменяйте сразу!
  • Не забывайте делать бэкапы папки data — потеряете всё при сбое диска.
  • Если используете Cloudflare или другой CDN, не блокируйте порты 80/443 для Let’s Encrypt.
  • Не запускайте Nginx Proxy Manager на том же порту, что и основной Nginx — будут конфликты.

Пример реального использования

У меня дома стоит мини-сервер (Intel NUC с Ubuntu 22.04), на котором крутится куча всего: Nextcloud, Home Assistant, личный блог на Ghost, Grafana, пару pet-проектов. Раньше для каждого городил отдельный конфиг, постоянно забывал обновлять сертификаты.
Сейчас всё просто: Nginx Proxy Manager в Docker, для каждого сервиса — отдельный прокси-хост в GUI. Сертификаты обновляются сами, можно быстро включить Basic Auth для админки, если надо — добавить кастомные настройки.
Плюс, если надо что-то протестировать — просто добавляю новый контейнер, прокидываю порт, прописываю домен в NPM, и через минуту сервис доступен извне. Не надо перезагружать Nginx, не надо лезть в ssh.

Заключение

Nginx Proxy Manager — отличный инструмент для тех, кто хочет быстро и удобно управлять прокси и SSL для своих сервисов, не заморачиваясь ручными конфигами. Подходит для домашних серверов, pet-проектов и даже для небольших продакшенов. Всё наглядно, просто и надёжно.
Рекомендую ознакомиться с официальным сайтом и репозиторием на GitHub — там есть ответы на все вопросы и примеры.

Если остались вопросы — смело спрашивайте в GitHub Discussions или на реддите.

Хотите прочитать больше про Разное?
Отзывов нет.

Ваш отзыв

Пожалуйста, заполните поля снизу и добавьте отзыв!.
Имя *
E-mail *
Сайт
Сообщение *