Nginx Proxy · 14 min read · Nov 20, 2025
Как установить и использовать Nginx Proxy Manager с Docker

Обратный прокси — это веб-сервер, который может находиться перед другим веб-сервером или веб-сервисом. Он может шифровать исходящий трафик, выступать в качестве балансировщика нагрузки, перенаправлять трафик и предлагать защиту. Веб-сервер Nginx может использоваться в качестве прокси-сервера перед традиционными серверами, но иногда его настройка может быть утомительной и вызывать проблемы, если не выполнена должным образом.
Nginx Proxy Manager — это приложение, которое упрощает настройку Nginx в качестве прокси-сервера, предоставляя графический интерфейс (GUI) с такими функциями, как встроенная поддержка SSL с использованием Let’s Encrypt, поддержка нескольких хостов, HTTP-аутентификация, списки доступа и управление пользователями.
Этот учебник научит вас, как установить Nginx Proxy Manager на сервере Linux с использованием Docker. Мы охватим все популярные дистрибутивы Linux в одном учебнике.
Предварительные требования
- Сервер Linux с установленным Ubuntu/Debian/CentOS/Alma Linux/Rocky Linux с минимум 1 ГБ ОЗУ.
- Пользователь без прав root с привилегиями sudo.
- Полностью квалифицированное доменное имя (FQDN), например
npm.example.com, указывающее на сервер.
Шаг 1 - Настройка брандмауэра
Cent OS/Rocky Linux/Alma Linux
У вас должен быть установлен брандмауэр Firewalld. Проверьте статус брандмауэра.
$ sudo firewall-cmd --state
running
Откройте порты 80, 81 и 443.
$ sudo firewall-cmd --permanent --add-service=http
$ sudo firewall-cmd --permanent --add-service=https
$ sudo firewall-cmd --permanent --add-port=81/tcp
Перезагрузите брандмауэр, чтобы применить изменения.
$ sudo firewall-cmd --reload
Ubuntu/Debian
Системы Ubuntu и Debian по умолчанию используют ufw (Uncomplicated Firewall).
Проверьте, работает ли брандмауэр.
$ sudo ufw status
Если он работает, откройте порты 80, 81 и 443.
$ sudo ufw allow 80
$ sudo ufw allow 81
$ sudo ufw allow 443
Откройте порт SSH, если брандмауэр не работает.
$ sudo ufw allow "OpenSSH"
Включите брандмауэр, если он не работает.
$ sudo ufw enable
Если он работает, перезагрузите его, чтобы применить изменения.
$ sudo ufw reload
Шаг 2 - Установка Docker
Cent OS/Rocky Linux/Alma Linux
Выполните следующую команду для установки Docker.
$ sudo yum install -y yum-utils
$ sudo yum-config-manager \
--add-repo \
https://download.docker.com/linux/centos/docker-ce.repo
$ sudo yum install docker-ce docker-ce-cli containerd.io
Ubuntu
$ sudo apt install ca-certificates curl gnupg lsb-release
$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
Debian
$ sudo apt install ca-certificates curl gnupg lsb-release
$ curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg
$ echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian \
$(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
$ sudo apt update
$ sudo apt install docker-ce docker-ce-cli containerd.io
Включите и запустите службу Docker.
$ sudo systemctl start docker --now
Добавьте свое имя пользователя в группу Docker.
$ sudo usermod -aG docker $USER
Выйдите из системы и войдите снова, чтобы применить изменения.
Шаг 3 - Установка Docker Compose
Скачайте и установите бинарный файл Docker Compose.
$ sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
Примените разрешения на выполнение к бинарному файлу.
$ sudo chmod +x /usr/local/bin/docker-compose
Шаг 4 - Создание файла Docker Compose
Создайте каталог для Nginx Proxy Manager.
$ mkdir ~/nginx-proxy
Перейдите в каталог.
$ cd ~/nginx-proxy
Создайте каталоги для пользовательских данных и SSL-сертификатов.
$ mkdir {data,letsencrypt}
Создайте и откройте файл docker-compose.yml для редактирования.
$ nano docker-compose.yml
Вставьте следующий код в него.
version: "3"
services:
npm-app:
image: 'jc21/nginx-proxy-manager:latest'
container_name: npm-app
restart: unless-stopped
ports:
- '80:80' # Публичный HTTP порт
- '443:443' # Публичный HTTPS порт
- '81:81' # Порт веб-администратора
# Добавьте любой другой потоковый порт, который вы хотите открыть
# - '21:21' # FTP
environment:
DB_MYSQL_HOST: "npm-db"
DB_MYSQL_PORT: 3306
DB_MYSQL_USER: "npm"
DB_MYSQL_PASSWORD: "npm"
DB_MYSQL_NAME: "npm"
# Раскомментируйте строку ниже, если IPv6 не включен на вашем хосте
# DISABLE_IPV6: 'true'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
depends_on:
- npm-db
networks:
- npm-nw
- npm-internal
npm-db:
image: 'mariadb:latest'
container_name: npm-db
restart: unless-stopped
environment:
MYSQL_ROOT_PASSWORD: 'npm'
MYSQL_DATABASE: 'npm'
MYSQL_USER: 'npm'
MYSQL_PASSWORD: 'npm'
volumes:
- ./data/mysql:/var/lib/mysql
networks:
- npm-internal
networks:
npm-internal:
npm-nw:
external: true
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Давайте пройдемся по файлу. Первая часть файла — это импорт изображения Nginx Proxy Manager и установка некоторых переменных окружения в виде учетных данных базы данных. Мы также открываем порты 80, 81 и 443 для доступа к серверу. Вы можете открыть больше портов, таких как 21, для доступа по FTP. Вы можете отключить поддержку IPV6, раскомментировав строку DISABLE_IPV6: 'true'. Мы сопоставили несколько каталогов с нашего хоста с Docker для хранения данных и SQL.
Мы используем здесь две сети. Одна — это внутренняя сеть npm-internal, чтобы соединить прокси-менеджер и базу данных. Эта сеть является необязательной, так как она создается автоматически. Но здесь мы делаем это вручную, дав ей имя по нашему выбору.
Мы добавили внешнюю сеть к контейнеру прокси-менеджера под названием npm-nw. Эта сеть необходима, потому что вы можете использовать ее для подключения прокси-менеджера к любым другим контейнерам Docker, которые вы установите. Использование сети позволит вам подключить любой контейнер напрямую, не открывая его порты для сервера.
Шаг 5 - Запуск Nginx Proxy Manager
Перед запуском контейнера Docker нам нужно создать внешнюю сеть npm-nw. Внутренние сети создаются автоматически. Выполните следующую команду, чтобы создать внешнюю сеть.
$ docker network create npm-nw
Запустите контейнер Docker, используя следующую команду.
$ docker-compose up -d
Проверьте статус контейнеров.
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c91ca0ddca97 jc21/nginx-proxy-manager:latest "/init" About a minute ago Up About a minute 0.0.0.0:80-81->80-81/tcp, :::80-81->80-81/tcp, 0.0.0.0:443->443/tcp, :::443->443/tcp npm-app
1738d71b95da mariadb:latest "docker-entrypoint.s…" About a minute ago Up About a minute 3306/tcp npm-db
Шаг 6 - Доступ к Nginx Proxy Manager
Теперь вы можете получить доступ к вашему Nginx Proxy Manager по URL http://yourserverIP:81. Вы должны увидеть следующий экран входа.

Введите следующие учетные данные по умолчанию для входа.
Адрес электронной почты: [email protected] Пароль: changeme
Далее вам будет предложено сразу установить имя и адрес электронной почты.

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

Снова нажмите кнопку Сохранить, и теперь вы можете начать использовать приложение.

Если вы откроете URL http://yourserverIP в своем браузере, вы попадете на страницу по умолчанию, которую установил прокси-менеджер.

Шаг 7 - Настройка доменного имени и SSL для Nginx Proxy Manager
Давайте установим доменное имя для доступа к Nginx Proxy Manager. Этот шаг является необязательным, но полезен, если вы хотите разместить приложение за SSL.
Нажмите на Хосты >> Прокси-хосты в меню панели управления, чтобы открыть страницу прокси-хостов. Оттуда нажмите кнопку Добавить прокси-хост, чтобы продолжить.

Добавьте имя FQDN ( npm.example.com) и нажмите на него. Введите IP-адрес вашего сервера и 81 в качестве Порта перенаправления.
Перейдите на вкладку SSL.

Выберите Запросить новый SSL-сертификат из выпадающего меню. Выберите параметры Принудительный SSL и Поддержка HTTP/2. Если вы хотите включить HSTS, вы также можете это сделать. Если ваш домен настроен через Cloudflare, не включайте опцию Принудительный SSL, иначе вы застрянете в цикле перенаправления.
Введите свой адрес электронной почты, согласитесь с Условиями обслуживания Let’s Encrypt (TOS) и нажмите кнопку Сохранить, чтобы завершить.

Ваш домен должен быть активен и работать. Попробуйте открыть https://npm.example.com в своем браузере, и вы должны увидеть экран входа Nginx Proxy Manager.
Вы можете аналогичным образом сделать это для страницы по умолчанию и назначить ей доменное имя, например https://example.com. Просто измените порт с 81 на 81 при настройке прокси-хоста.
Шаг 8 - Использование Nginx Proxy Manager с другим веб-приложением Docker
Теперь, когда мы установили прокси-менеджер, пришло время использовать его. Первое, что мы сделаем, это использовать его для размещения другого веб-приложения Docker. Для этого мы установим блог Ghost. Если вы хотите узнать больше, ознакомьтесь с нашим учебником по установке Ghost с использованием Docker на сервере Ubuntu.
Создайте другой каталог для вашего блога Ghost.
$ mkdir ~/ghost
Перейдите в каталог Ghost.
$ cd ~/ghost
Создайте два каталога для содержимого и базы данных.
$ mkdir {content,mysql}
Даже если вы используете одно и то же изображение MySQL, вам следует хранить данные и их контейнеры отдельно от прокси-менеджера. Это поможет изолировать любые проблемы, с которыми вы можете столкнуться, и позволит вам перемещать вещи, если это необходимо.
Создайте и откройте файл Docker Compose для редактирования.
$ nano docker-compose.yml
Вставьте следующий код. Замените example.com на ваше фактическое доменное имя для вашего блога Ghost. Введите данные SMTP, если вы хотите получать электронные письма. Вы можете удалить их, если они вам не нужны.
version: '3.3'
services:
ghost-app:
image: ghost:latest
container_name: ghost-app
restart: always
depends_on:
- ghost-db
environment:
url: https://ghost.example.com
database__client: mysql
database__connection__host: ghost-db
database__connection__user: ghost
database__connection__password: ghostdbpass
database__connection__database: ghostdb
mail__transport: SMTP
mail__options__host: {Ваш хост почтового сервиса}
mail__options__port: {Порт вашего почтового сервиса}
mail__options__secureConnection: {true/false}
mail__options__service: {Ваш почтовый сервис}
mail__options__auth__user: {Ваше имя пользователя}
mail__options__auth__pass: {Ваш пароль}
volumes:
- /home//ghost/content:/var/lib/ghost/content
networks:
- npm-nw
- ghost-network
ghost-db:
image: mariadb:latest
container_name: ghost-db
restart: always
environment:
MYSQL_ROOT_PASSWORD: your_mysql_root_password
MYSQL_USER: ghost
MYSQL_PASSWORD: ghostdbpass
MYSQL_DATABASE: ghostdb
volumes:
- /home//ghost/mysql:/var/lib/mysql
networks:
- ghost-network
networks:
ghost-network:
npm-nw:
external: true
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Как вы можете видеть, мы подключили контейнер Ghost к Nginx Proxy Manager, используя внешнюю сеть npm-nw. Таким образом, мы не открываем порты Ghost для системы. Мы также использовали внутреннюю сеть ghost-network, чтобы соединить наше приложение Ghost и соответствующий контейнер базы данных.
Запустите контейнер.
$ docker-compose up -d
Настройка Ghost в Nginx Proxy Manager
Теперь нам нужно настроить обратный прокси для нашей установки Ghost. Откройте Nginx Proxy Manager в своем браузере, перейдите в Панель управления >> Хосты >> Прокси-хост, и добавьте новый прокси-хост.

Добавьте доменное имя, которое вы выбрали для своего блога Ghost. Для значения Имя хоста/IP введите имя вашего контейнера. В данном случае это будет ghost-app. Мы не можем добавить IP-адрес здесь, потому что мы не открыли порт Ghost для сервера, и прокси Nginx не сможет достучаться до Ghost по IP. Поэтому мы используем имя контейнера, к которому NPM может получить доступ с помощью сети Docker npm-nw, которую мы создали. Используйте 2368 в качестве порта, это порт по умолчанию, используемый блогом Ghost. Проверьте другие параметры, как показано на скриншоте выше.
Далее перейдите на вкладку SSL и создайте новый SSL-сертификат, следуя шагу 6. Поскольку вы будете загружать содержимое на свой блог Ghost, будет полезно установить максимальный размер загрузки для ваших загрузок.
К счастью, NPM позволяет вам добавлять пользовательские настройки. Перейдите на вкладку Расширенные и введите client_max_body_size 50m; в поле.

Нажмите кнопку Сохранить, чтобы завершить добавление прокси-хоста. Вы должны иметь возможность получить доступ к своему блогу Ghost по URL https://ghost.exampl.com

Шаг 9 - Использование Nginx Proxy Manager в качестве службы перенаправления
Давайте посмотрим, как вы можете использовать NPM для простого перенаправления одного домена на другой. Для этого перейдите в Панель управления >> Хосты >> Хосты перенаправления. Оттуда нажмите кнопку Добавить хост перенаправления, чтобы начать.

Введите доменное имя, которое вы хотите перенаправить. И введите перенаправляемый домен. Перенаправляемый домен должен быть уже настроен. Оставьте схему как авто. В зависимости от ваших требований вы можете выбрать http или https. Выберите правильный HTTP-код и отметьте опции Сохранить путь и Блокировать общие уязвимости. Если вы используете схему авто или https, убедитесь, что вы выбрали или создали SSL-сертификат с помощью NPM. Нажмите Сохранить, чтобы завершить добавление вашего хоста перенаправления.
Ваш домен example.com должен начать перенаправление на blog.example.com.
Другие способы использования Nginx Proxy Manager
Существует еще два способа, которыми вы можете использовать Nginx Proxy Manager. Вы можете использовать его в качестве хоста 404, что означает, что вы можете использовать домен в качестве целевой страницы, чтобы показать поисковым системам, что страницы домена не существуют. Этот шаг включает просто ввод домена и настройку SSL для него. Вы также можете использовать это как возможность отслеживать журналы для доменного имени и просматривать трафик рефереров.
Другой функцией является использование NPM в качестве потокового хоста. Вы можете использовать эту функцию для перенаправления TCP/UDP портов на другой компьютер в сети. Это полезно, если вы хостите игровые серверы. Единственное, что требуется, это ввести входящий порт, перенаправляемый домен или IP-адрес, перенаправляемый порт и выбрать тип порта.

Использование Nginx Proxy Manager для хостинга статического веб-сайта
Nginx Proxy Manager также может хостить простые статические или динамические веб-сайты. Для этого добавьте новый прокси-хост и выберите 127.0.0.1 в качестве Перенаправляемого домена и 80 в качестве порта.

На вкладке Расширенные введите конфигурацию, указывающую корневой каталог. Убедитесь, что корневой каталог для сайта смонтирован в начальной конфигурации Docker Compose. Здесь мы используем каталог /data/static для хостинга нашего статического веб-сайта.

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

Шаг 10 - Разное
Использование функции контроля доступа Nginx Proxy Manager
Вы можете использовать функцию списков доступа NPM для включения HTTP-аутентификации или блокировки диапазонов IP. Откройте NPM и перейдите на страницу Панель управления >> Списки доступа.
Нажмите кнопку Добавить список доступа, чтобы начать.

Вы можете назвать свою конфигурацию списка доступа (ACL). Вкладка Удовлетворить любое (Satisfy Any), если отмечена, позволит доступ, если клиент выполнит любое из указанных условий. Если клиент проходит HTTP-аутентификацию, но может не пройти доступ на основе IP, ему будет разрешен доступ. Но если опция Удовлетворить любое не отмечена, клиенту нужно будет выполнить все условия.
Функция Передать аутентификацию хосту перенаправит функцию аутентификации на сервер хоста.
Далее перейдите на вкладку Авторизация. Здесь вы можете создать имя пользователя и пароль для метода HTTP-аутентификации. Чтобы добавить более одного пользователя, нажмите кнопку Добавить. Вы можете добавить только до 5 пользователей. И есть ошибка с кнопкой Добавить, поэтому используйте кнопку сначала, а затем заполните данные. Если вы заполните данные и нажмете кнопку позже, чтобы добавить другого пользователя, она очистит предыдущие данные пользователя.

Перейдите на вкладку Доступ. Здесь вы можете установить, какие IP-адреса должны получить или отказать в доступе.

Нажмите Сохранить, чтобы завершить.
Чтобы использовать этот список доступа, вам нужно выбрать его при добавлении вашего прокси-хоста. Как в примере для блога Ghost ниже, мы выбрали наш список доступа.

Включение поддержки для большего количества доменных имен
По мере роста числа хостов и доменов ваш Nginx может исчерпать пространство хеширования или столкнуться с проблемами памяти. Мы можем добавить пользовательскую конфигурацию, которая будет применяться ко всем хостам, чтобы решить эту проблему.
Для этого создайте каталог custom внутри ~/nginx-proxy/data/nginx.
$ sudo mkdir ~/nginx-proxy/data/nginx/custom
Создайте и откройте файл http.conf внутри этого каталога.
$ sudo nano ~/nginx-proxy/data/nginx/custom/http.conf
Вставьте следующие строки в него.
proxy_headers_hash_max_size 1024;
proxy_headers_hash_bucket_size 128;
Сохраните файл, нажав Ctrl + X и введя Y при появлении запроса.
Nginx должен автоматически принять эти значения. Если это не произойдет, вы можете перезапустить контейнер NPM, используя следующую команду.
$ docker restart npm-app
Перенаправление страницы по умолчанию
На шаге 6 вы видите страницу по умолчанию, когда вводите URL http://. Если вы хотите изменить это, это возможно. Для этого перейдите на Страницу настроек. Нажмите на три точки в правом верхнем углу и нажмите кнопку Редактировать.

Вы можете установить целевую страницу, чтобы она действовала как страница 404, страница перенаправления или добавить пользовательский HTML, используя опцию Пользовательская страница. Если вы выберете Перенаправление, вам нужно будет указать целевой URL.

Это HTML-код, который мы использовали для нашей цели.
Здесь ничего нет
Упс!
Извините за неудобства, но вы не должны быть здесь. Вы ничего здесь не получите. Эта страница была установлена для руководства HowtoForge Nginx Proxy Manager. Возможно, когда-нибудь она покажет что-то.
Нажмите Сохранить, чтобы завершить. Ваша целевая страница должна быть изменена на что-то вроде ниже.

Шаг 11 - Обновление Nginx Proxy Manager
Чтобы обновить NPM, сначала остановите контейнеры.
$ cd ~/nginx-proxy
$ docker-compose down --remove-orphans
Загрузите последние образы.
$ docker-compose pull
Снова запустите контейнеры.
$ docker-compose up -d
Заключение
Это завершает наш учебник, в котором вы установили Nginx Proxy Manager и узнали, как использовать его для добавления прокси-хоста для другого контейнера Docker, использовать его в качестве службы перенаправления и контролировать доступ с его помощью. Если у вас есть какие-либо вопросы, оставляйте их в комментариях ниже.
Get new posts in your inbox
No spam. Unsubscribe anytime.