В одной из прошлых статей мы разобрали как установить и настроить реверс прокси Traefik. В данной статье мы разберемся как установить и настроить реверс прокси Nginx Proxy Manager.
Установка
Установка Nginx Proxy Manager сводится к установки docker контейнера. На сервере должен быть установлен docker и docker-compose. О том как установить Docker + docker-compose + Portainer мы рассказывать в данной статье. Вы также можете заказать виртуальный сервер с docker + portainer.
Создадим директорию npm в которой создадим файла docker-compose.yml
mkdir npm
cd npm
nano docker-compose.yml
В файл вставялем следующий текст
version: '3'
services:
app:
image: 'jc21/nginx-proxy-manager:latest'
restart: unless-stopped
ports:
- '80:80'
- '81:81'
- '443:443'
volumes:
- ./data:/data
- ./letsencrypt:/etc/letsencrypt
Теперь развернем контейнер командой
docker-compose up -d
После того как контейнер развернется у вас появится доступ к админ панели Nginx Proxy Manager она будет доступна на 81 порту по адресу вашего сервера http://IPсервера:81.

Для входа в панель управления используем следующие данные
Email: [email protected]
Password: changeme
После первого входа обязательно следует изменить почту и пароль, для этого в верхнем правом углу нажмите на имя пользователя и в профиле измените почту и потом пароль.
Настройка Nginx Proxy Manager

После входа в панель управления вы можете перейти к настройке Nginx Proxy Manager. Для добавления новых proxy переходим в раздел Hosts и нажимаем Add Proxy Host.

В поле Domain Names добавляем доменное имя и ниже в Scheme выбираем протокол по которому будет происходить перенаправление, а в Forward Hostname / IP вводим IP адрес или доменное имя на которое будет происходить перенаправление и указываем порт, если он отличный от 80. Для дополнительной защиты вы можете активировать опцию Block Common Exploits.

При создании хоста есть возможность выпустить SSL сертификат Let’s Encrypt, для этого перейдите во вкладку SSL в поле SSL Certificate вы можете выбрать создание нового сертификата либо использовать ранее созданный сертификат.
Защита хостов в Nginx Proxy Manager
Для того чтобы дополнительно реализовать защиту хостов в Nginx Proxy Manager используется Access-control list. Возможно реализовать как доступ по логину и паролю так и доступ по отдельному IP либо подсети.

Для создания нового списка доступа переходим в меню Access Lists и нажимаем на Add Access Lists. Укажем имя нашей группе users. При выключенной опции Satisfy Any в случае если вы добавите авторизацию по логину и укажите правила доступа с определенных IP адресов то доступ к хосту будет только при соблюдении этих двух условий.

На вкладке Authorization добавим необходимое количество пользователей.

Во вкладке Access вы так же можете добавить IP адреса доступ с которых будет доступен или запрещен.

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

И теперь при попытке входа на сайт которому был применен список доступа будет запрашиваться авторизация с просьбой ввести логин и пароль.
На этом базовая настройка Nginx Proxy Mamager Завершена.