Nginx Proxy Manager: настройка и использование

    Команда Simple-Server
    03.06.2026
    13 мин

    Материал подготовлен командой Simple-Server для администраторов VPS и выделенных серверов. Команды и пути проверяйте на тестовой машине перед production.

    Что такое Nginx Proxy Manager

    Nginx Proxy Manager — это обратный прокси-сервер (reverse proxy) с поддержкой графического интерфейса, разработанный для упрощения настройки и управлением обратными прокси на основе веб-сервера Nginx. Сервис используется для организации доступа к различным веб-приложениям через единую точку входа (в качестве единой точки входа может выступать, например, доменное имя или IP-адрес) с дальнейшей маршрутизацией до конечного приложения.

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

    Отличие Nginx Proxy Manager от Nginx

    Несмотря на наличие слова «Nginx» в название программы, Nginx Proxy Manager не имеет прямого отношения к компании NGINX Inc., которая является коммерческим разработчиком оригинального веб-сервера Nginx. Однако Nginx Proxy Manager основан на оригинальном исходном коде Nginx и использует его в качестве основы для своей работы.

    Также NPM обладает расширенным функционалом, который включает в себя следующие особенности:

    • Встроенный веб-интерфейс.
    • Быстрая и удобная настройка переадресации доменов, использование встроенной функции Streams для настройки потоков данных, проходящих через протоколы TCP/UDP, а также кастомизация страниц с кодом ошибки 404.
    • Наличие встроенного сервиса Let's Encrypt для выпуска бесплатных SSL сертификатов. Также сохраняется возможность использования самоподписанных сертификатов и сертификатов, выпущенных сторонними удостоверяющими центрами.
    • Функционал по обеспечению безопасности, включающий в себя списки доступов (Access-control list) и HTTP-аутентификацию (HTTP Basic Auth).
    • Управление пользователями, настройка прав доступа и аудит лог файлов.

    Предварительные требования

    Чтобы установить и использовать Nginx Proxy Manager, нам понадобится следующее:

    • Один сервер или одна виртуальная машина с любым предустановленным дистрибутивом Linux. В этом материале в качестве примера мы будем использовать дистрибутив Ubuntu 24.04.

    Один сервер или одна виртуальная машина с любым предустановленным дистрибутивом Linux. В этом материале в качестве примера мы будем использовать дистрибутив Ubuntu 24.04.

    Сервер должен соответствовать следующим требованиям:

    • Минимум 1 ГБ оперативной памяти. Данный объем подойдет только для тестирования Nginx Proxy Manager и не предназначен для решения реальных задач. Для production-решений необходимо минимум 2 ГБ оперативной памяти. ****При тестировании конфигурации на собственном устройстве будет достаточно менее 1 ГБ оперативной памяти.
    • Минимум 1-ядерный процессор для тестирования конфигурации. Для выполнения реальных задач рекомендуется 4-ядерный процессор.

    Минимум 1-ядерный процессор для тестирования конфигурации. Для выполнения реальных задач рекомендуется 4-ядерный процессор.

    Сервер можно создать в панели управления в разделе «Облачные серверы». В процессе:

    • Выберите регион с минимальным пингом для быстрой передачи данных.

    • Выберите конфигурацию, достаточную для ваших задач. В рамках данной статьи для запуска и тестового использования Nginx Proxy Manager без реальной нагрузки будет достаточно конфигурации с одноядерном процессором, 1 ГБ оперативной памяти и 15 ГБ места на NVMe-диске.

    Выберите регион с минимальным пингом для быстрой передачи данных.

    Выберите конфигурацию, достаточную для ваших задач. В рамках данной статьи для запуска и тестового использования Nginx Proxy Manager без реальной нагрузки будет достаточно конфигурации с одноядерном процессором, 1 ГБ оперативной памяти и 15 ГБ места на NVMe-диске.

    Остальные параметры можно оставить без изменений.

    Сервер будет запущен через пару минут, и вы сможете найти IP-адрес, логин и пароль для подключения на Дашборде сервера.

    На сервере должны быть открыты порты 80, 81 и 443, которые Nginx Proxy Manager использует в своей работе. По умолчанию в дистрибутиве Ubuntu используется утилита UFW. Необходимо открыть данные порты, используя следующие команды:

    Либо UFW можно выключить совсем, если он не используется:

    systemctl stop ufw && systemctl disable ufw

    Если вместо UFW используется программа iptables, то команды будут следующими:

    Для входящих соединений по протоколу TCP:

    iptables -A INPUT -p tcp --match multiport --dports 80,81,443 -j ACCEPT

    Для входящих соединений по протоколу UDP:

    iptables -A INPUT -p udp --match multiport --dports 80,81,443 -j ACCEPT

    Для исходящих соединений по протоколу TCP:

    iptables -A OUTPUT -p tcp --match multiport --dports 80,81,443 -j ACCEPT

    Для исходящих соединений по протоколу UDP:

    iptables -A OUTPUT -p udp --match multiport --dports 80,81,443 -j ACCEPT

    Установка Docker и Docker Compose

    Для работы с Nginx Proxy Manager нам потребуются Docker и Docker Compose, которые мы установим из официального репозитория Docker. Для этого выполняем следующие шаги:

    1. Создаем директорию /etc/apt/keyrings с правами доступа 0755:
    sudo install -m 0755 -d /etc/apt/keyrings
    1. При помощи утилиты curl скачиваем GPG-ключ от официального репозитория Docker и перемещаем его в ранее созданную директорию /etc/apt/keyrings:

    2. Выставляем права на чтение для скачанного ключа:

    chmod a+r /etc/apt/keyrings/docker.asc
    1. Добавляем адрес официального репозитория Docker в систему:

    2. Обновляем индекс репозиториев и устанавливаем пакеты docker и docker-compose:

    apt update && apt -y install docker-ce docker-compose-plugin
    1. Проверьте успешность установки.

    Для проверки установки Docker:

    Для проверки установки Docker Compose:

    Если обе команды вернули версии программ, то Docker и Docker Compose успешно установлены в системе.

    Подготовка тестовых приложений

    В качестве теста мы будем использовать три контейнера Docker с веб-сервером Nginx. У каждого запущенного контейнера свой уникальный порт, при обращении к которому будет отображаться своя фраза. Цель будет заключаться в следующем: используя Nginx Proxy Manager, «опубликовать» все три сервиса, чтобы они были доступны пользователям в рамках частной сети по доменным именам и возвращали пользователям свой уникальный контент. Для этого нам понадобится три доменных имени. Так как все действия производятся сугубо для тестирования, мы воспользуемся локальными доменами, а именно пропишем тестовые доменные в файле /etc/hosts.

    По умолчанию, Docker создает свою подсеть с адресом 172.17.0.1:

    1. Открываем на редактирование при помощи любого текстового редактора файл hosts:

    И прописываем три тестовых домена, используя в качестве IP-адреса адрес интерфейса Docker — docker0.

    172.17.0.1 nginx1.test.com 172.17.0.1 nginx2.test.com 172.17.0.1 nginx3.test.com

    Сохраняем изменения и выходим из файла.

    1. Далее создаем новую директорию, где будет храниться конфигурация для трех контейнеров в виде docker-compose-файла, и сразу переходим в нее:
    mkdir nginx-test-apps && cd nginx-test-apps
    1. Создаем файл с именем docker-compose.yml:

    Используем следующее содержимое:

    services: nginx1: image: nginx:alpine3.21 ports: - "8081:80" volumes: - ./nginx1/html:/usr/share/nginx/html command: ["/bin/sh", "-c", "echo 'Hello from nginx1!' > /usr/share/nginx/html/index.html && nginx -g 'daemon off;'"] nginx2: image: nginx:alpine3.21 ports: - "8082:80" volumes: - ./nginx2/html:/usr/share/nginx/html command: ["/bin/sh", "-c", "echo 'Hello from nginx2!' > /usr/share/nginx/html/index.html && nginx -g 'daemon off;'"] nginx3: image: nginx:alpine3.21 ports: - "8083:80" volumes: - ./nginx3/html:/usr/share/nginx/html command: ["/bin/sh", "-c", "echo 'Hello from nginx3!' > /usr/share/nginx/html/index.html && nginx -g 'daemon off;'"]

    Сохраняем изменения и выходим из файла.

    1. Для создания контейнеров используем команду:

    2. Убедимся, что все три контейнера успешно запущены, используя команду:

    Также проверим что все три приложения возвращаю в ответе свою фразу. Для этого используем команду curl с указанием IP-адреса сервера и порта контейнера:

    curl 172.17.0.1:8081 curl 172.17.0.1:8082 curl 172.17.0.1:8083

    Все три контейнера возвращают свои уникальные ответы. На этом подготовка тестовых приложений завершена.

    Запуск и настройка Nginx Proxy Manager

    Далее мы подробно рассмотрим процесс запуска и настройки Nginx Proxy Manager.

    Запуск базовой конфигурации

    Для начала рассмотрим базовый запуск программы, используя минимальный набор параметров.

    1. Создаем новую директорию для проекта и переходим в нее:
    mkdir nginx-proxy-manager-basic && cd nginx-proxy-manager-basic
    1. Внутри директории создаем новый файл с именем docker-compose.yml:

    И используем следующую конфигурацию:

    services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '81:81' - '443:443' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt

    Сохраняем изменения и выходим из файла.

    1. Для запуска воспользуемся командой:

    При первом запуске дожидаемся процесса скачивания образа. При успешном завершении процесса команда сообщит о том, что контейнер был запущен:

    По итогу у нас будет запущен один контейнер с Nginx Proxy Manager, у которого проброшены порты 80, 81 и 443.

    На этом процесс запуска успешно завершен. Далее разберём настройку Nginx Proxy Manager для трех веб-приложений, запущенных в контейнерах Docker.

    Первоначальная настройка Nginx Proxy Manager

    Ранее мы упоминали, что настройка Nginx Proxy Manager осуществляется исключительно через веб-интерфейс. Веб-консоль доступна на 81 порту. Открываем браузер и переходим по IP-адресу сервера, используя порт 81:

    Логин (Email) и пароль по умолчанию следующие:

    При первом входе программа предложит поменять данные стандартного пользователя. Имя пользователя и псевдоним (nickname) можно поменять по желанию, однако адрес электронный почты надо обязательно сменить со стандартного на другой:

    Далее система предложит изменить пароль. Для этого сначала необходимо ввести стандартный пароль, далее новый и повторить его:

    После этого отобразится главная страница Nginx Proxy Manager:

    Настройка и использование Nginx Proxy Manager

    Настроим схему работы для трех запущенных приложений, при которой к каждому сервису можно обратиться по доменному имени и получить уникальный ответ от каждого приложения.

    1. В веб-интерфейсе Nginx Proxy Manager переходим в раздел Proxy Hosts :

    Далее нажимаем на кнопку Add Proxy Host :

    1. Далее:
    * В поле **Domain name** вводим доменное имя, по которому будет доступно приложение. * В поле **Forward Hostname / IP** вводим IP адрес контейнера (в нашем случае это внутренний IP-адрес интерфейса Docker). * В разделе **Forward Port** необходимо указать порт контейнера, который «слушает» сервис.
    • В поле Domain name вводим доменное имя, по которому будет доступно приложение.
    • В поле Forward Hostname / IP вводим IP адрес контейнера (в нашем случае это внутренний IP-адрес интерфейса Docker).
    • В разделе Forward Port необходимо указать порт контейнера, который «слушает» сервис.

    Для сохранения конфигурации используем кнопку Save.

    1. Для добавления нового прокси-хоста нажимаем на кнопку Add Proxy Host , которая располагается справа сверху:

    2. По аналогии добавляем второе приложение:

    В итоге у нас будут добавлены три приложения:

    1. После того как все приложения будут добавлены, возвращаемся на сервер и при помощи утилиты curl отправляем запрос на каждый из доменных имен:

    По итогу мы получили уникальный ответ от каждого приложения.

    Подключение MySQL/MariaDB

    По умолчанию для хранения конфигурации и данных Nginx Proxy Manager использует встраиваемую СУБД SQLite. Однако при желании SQLite можно поменять на MySQL или на MariaDB. В качестве минимально поддерживаемых версий заявлены следующие:

    • MySQL версии 5.7.8 и выше
    • MariaDB версии 10.2.7 и выше

    Ниже приведен пример использования конфигурации с СУБД MySQL/MariaDB:

    services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '443:443' - '81:81' environment: DB_MYSQL_HOST: "db" DB_MYSQL_PORT: 3306 DB_MYSQL_USER: "npm" DB_MYSQL_PASSWORD: "npm" DB_MYSQL_NAME: "npm" volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt depends_on: - db db: image: 'jc21/mariadb-aria:latest' restart: unless-stopped environment: MYSQL_ROOT_PASSWORD: 'npm' MYSQL_DATABASE: 'npm' MYSQL_USER: 'npm' MYSQL_PASSWORD: 'npm' MARIADB_AUTO_UPGRADE: '1' volumes: - ./mysql:/var/lib/mysql

    В качестве переменных окружения используются следующие:

    • DB_MYSQL_HOST — Адрес сервера, на котором запущена база данных.
    • DB_MYSQL_PORT — Номер порта, через который осуществляется подключение к базе данных.
    • DB_MYSQL_USER — Имя пользователя, используемое для аутентификации в базе данных.
    • DB_MYSQL_PASSWORD — Пароль пользователя, из-под которого осуществляется подключение к базе данных.
    • DB_MYSQL_NAME — Название базы данных, к которой производиться подключение.
    • MYSQL_ROOT_PASSWORD — Пароль пользователя root в MySQL.
    • MYSQL_DATABASE — Название базы данных, которая будет автоматически создана при запуске MySQL.
    • MYSQL_USER — Имя дополнительного пользователя, из-под имени которого будет запущена база данных.
    • MYSQL_PASSWORD — Пароль для пользователя, указанного в переменной MYSQL_USER.
    • MARIADB_AUTO_UPGRADE — Параметр, отвечающий за необходимость автоматического обновления схемы базы данных MariaDB до последней версии при запуске.

    Все значения переменных, перечисленных выше, можно поменять в соответствии с вашими требованиями.

    Помимо MySQL и MariaDB, в официальной документации по Nginx Proxy Manager упоминается и PostgreSQL, но официально поддержка PostgreSQL не заявлена. Однако в тестовых целях PostgreSQL можно использовать. Для этого достаточно применить следующую конфигурацию:

    services: app: image: 'jc21/nginx-proxy-manager:latest' restart: unless-stopped ports: - '80:80' - '443:443' - '81:81' environment: DB_POSTGRES_HOST: 'db' DB_POSTGRES_PORT: '5432' DB_POSTGRES_USER: 'npm' DB_POSTGRES_PASSWORD: 'npmpass' DB_POSTGRES_NAME: 'npm' volumes: - ./data:/data - ./letsencrypt:/etc/letsencrypt depends_on: - db db: image: postgres:latest environment: POSTGRES_USER: 'npm' POSTGRES_PASSWORD: 'npmpass' POSTGRES_DB: 'npm' volumes: - ./postgres:/var/lib/postgresql/data

    Обратите внимание, что в качестве тега для образа postgres задан тег latest, что может привести к неработоспособности сервиса или содержать недоработки, а также проблемы, связанные с безопасностью.


    Нужен сервер для практики? Арендуйте VPS/VDS в России — root-доступ, NVMe, DDoS-защита и поддержка 24/7.

    VPS для проекта

    VPS с root-доступом, NVMe и поддержкой 24/7 на Simple-Server.

    StarterVDS

    490₽

    в месяц

    1 ядро

    1 ГБ RAM

    20 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Безлимитный трафик
    Заказать VPS
    Рекомендуем

    PerformanceVDS

    1190₽

    в месяц

    2 ядра

    4 ГБ RAM

    60 ГБ NVMe

    • 1 IPv4
    • KVM
    • Root-доступ
    • Базовая DDoS-защита
    Заказать VPS

    Нужна другая конфигурация или чистый VPS без панели?

    Все тарифы VPS

    Похожие статьи, которые могут быть вам интересны