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. Вы должны увидеть следующий экран входа.

Экран входа в Nginx Proxy Manager

Введите следующие учетные данные по умолчанию для входа.

Адрес электронной почты: [email protected] Пароль: changeme

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

Всплывающее окно редактирования пользователя Nginx Proxy Manager

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

Всплывающее окно установки пароля Nginx Proxy Manager

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

Панель управления Nginx Proxy Manager

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

Страница по умолчанию Nginx Proxy Manager

Шаг 7 - Настройка доменного имени и SSL для Nginx Proxy Manager

Давайте установим доменное имя для доступа к Nginx Proxy Manager. Этот шаг является необязательным, но полезен, если вы хотите разместить приложение за SSL.

Нажмите на Хосты >> Прокси-хосты в меню панели управления, чтобы открыть страницу прокси-хостов. Оттуда нажмите кнопку Добавить прокси-хост, чтобы продолжить.

Новый экран прокси-хоста Nginx Proxy Manager

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

Перейдите на вкладку SSL.

Настройка SSL Nginx Proxy Manager

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

Введите свой адрес электронной почты, согласитесь с Условиями обслуживания Let’s Encrypt (TOS) и нажмите кнопку Сохранить, чтобы завершить.

Список прокси-хостов Nginx Proxy Manager

Ваш домен должен быть активен и работать. Попробуйте открыть 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 в 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 NPM

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

Главная страница блога Ghost

Шаг 9 - Использование Nginx Proxy Manager в качестве службы перенаправления

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

Хост перенаправления Nginx Proxy Manager

Введите доменное имя, которое вы хотите перенаправить. И введите перенаправляемый домен. Перенаправляемый домен должен быть уже настроен. Оставьте схему как авто. В зависимости от ваших требований вы можете выбрать 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 для хостинга статического веб-сайта

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

Хост статического веб-сайта Nginx Proxy Manager

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

Расширенная конфигурация статического сайта Nginx Proxy Manager

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

Демонстрационная страница статического сайта

Шаг 10 - Разное

Использование функции контроля доступа Nginx Proxy Manager

Вы можете использовать функцию списков доступа NPM для включения HTTP-аутентификации или блокировки диапазонов IP. Откройте NPM и перейдите на страницу Панель управления >> Списки доступа.

Нажмите кнопку Добавить список доступа, чтобы начать.

Новый список доступа Nginx Proxy Manager

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

Функция Передать аутентификацию хосту перенаправит функцию аутентификации на сервер хоста.

Далее перейдите на вкладку Авторизация. Здесь вы можете создать имя пользователя и пароль для метода HTTP-аутентификации. Чтобы добавить более одного пользователя, нажмите кнопку Добавить. Вы можете добавить только до 5 пользователей. И есть ошибка с кнопкой Добавить, поэтому используйте кнопку сначала, а затем заполните данные. Если вы заполните данные и нажмете кнопку позже, чтобы добавить другого пользователя, она очистит предыдущие данные пользователя.

Настройки авторизации Nginx Proxy Manager

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

Вкладка доступа IP Nginx Proxy Manager

Нажмите Сохранить, чтобы завершить.

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

Поддержка списка доступа прокси Nginx Proxy Manager

Включение поддержки для большего количества доменных имен

По мере роста числа хостов и доменов ваш 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://. Если вы хотите изменить это, это возможно. Для этого перейдите на Страницу настроек. Нажмите на три точки в правом верхнем углу и нажмите кнопку Редактировать.

Редактирование страницы по умолчанию Nginx Proxy Manager

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

Настройки сайта по умолчанию Nginx Proxy Manager

Это HTML-код, который мы использовали для нашей цели.



  
    Здесь ничего нет
    
    
    
    
  
  
    

Упс!

Извините за неудобства, но вы не должны быть здесь. Вы ничего здесь не получите. Эта страница была установлена для руководства HowtoForge Nginx Proxy Manager. Возможно, когда-нибудь она покажет что-то.

Нажмите Сохранить, чтобы завершить. Ваша целевая страница должна быть изменена на что-то вроде ниже.

Пользовательская целевая страница 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, использовать его в качестве службы перенаправления и контролировать доступ с его помощью. Если у вас есть какие-либо вопросы, оставляйте их в комментариях ниже.

Share: X/Twitter LinkedIn

Get new posts in your inbox

No spam. Unsubscribe anytime.