
Всем привет! Меня зовут Александр, и я системный инженер в облачном провайдере mClouds.ru. В этой статье я расскажу как использовать веб-интерфейс в Nginx, на примере Nginx UI и Nginx Proxy Manager. Перечислим основные «кейсы» использования подобных веб-интерфейсов.
Итак, ни одна инфраструктура не обходится без веб-сервера или пограничного proxy. Через них пользователи могут взаимодействовать с компанией. Самое известное решение для подобного рода задач – Nginx. ПО имеет богатый функционал и широкое комьюнити. Разработчики регулярно выпускают новые версии, исправляя ошибки и закрывая найденные уязвимости. Но иногда возникает задача мониторинга таких серверов. И в случае ограниченности ресурсов или для ускорения первичной настройки и последующей эксплуатации применяют сторонние сервисы – веб-интерфейсы управления. В данной статье мы рассмотрим два их них – Nginx UI и Nginx Proxy Manager.
Перечислим основные «кейсы» использования подобных веб-интерфейсов:
Нехватка ресурсов для размещения систем мониторинга и визуализации: в ситуации, когда у вас попросту не хватает ресурсов (как серверных, так и финансовых) для создания отдельной виртуальной машины с размещением на нем системы мониторинга, такие решения могут помочь вам собирать более понятные и детальные данные о состоянии вашего веб-сервера. Более того, такие данные куда проще интерпретировать и просматривать людям, не связанными с IT: например, менеджерам или руководителям.
Минимизация используемого ПО: доступ до панели управления осуществляется через веб-браузер. Это поможет вам минимизировать перечень используемого в работе ПО
Повышение безопасности сервера: Через панель управления можно редактировать конфигурации сайтов, размещенных на веб-сервере. Администраторам не придется создавать отдельных пользователей в самой ОС, выдавать им права и следить за тем, чтобы пользователь случайно или умышленно не изменил критические файлы в системе. В случае с веб-панелью управления, максимум, что сможет задеть пользователь – это конфигурация самого сайта, не затронув других файлов
Nginx UI
Nginx UI – решение с открытым исходным кодом, представляющее собой простое и многофункциональное решение по управлению, мониторингу и администрированию серверов под управлением nginx. Проект реализован на Go и Vue.js.
Основными возможностями Nginx UI являются:
Управление сайтами: в интерфейсе реализована возможность создавать, изменять, удалять и изменять виртуальные сайты
Неизменность структуры файлов: при установке в ОС сервис не изменяет структуру файлов и каталогов. То есть, все файлы всё так же будут находиться в стандартной для себя папке /etc/nginx
Возможность получения и управления SSL-сертификатами Let’s Encrypt
Мониторинг состояния сервера и потребляемых им ресурсов
Установка выполняется в одну команду:
bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ install.
После установки сервис автоматически запустится и начнет работу на порту 9000 tcp.

Удалить NginxUI можно при помощи команды
bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ remove
Сама веб-панель представляет собой бинарный файл и systemd-юнит для управления внутри ОС. Скрипт загружает конфигурацию, формирует systemd-демон и запускает его. Все данные хранятся в базе данных sqllite вместе с конфигурацией
Файл конфигурации по умолчанию расположен по пути /usr/local/etc/nginx-ui/app.ini. В нем можно изменять параметры панели: переключить с http на https, изменить порт подключения, включить ротацию логов и другое.
Подключимся к интерфейсу по ссылке: http://<IP-адрес>:9000. И мы видим окно для завершения настройки. В нем необходимо указать имя пользователя с правами администратора, его почтовый адрес, пароль и, опционально, название базы данных.

После ввода необходимых данных мы попадаем на форму авторизации в системе. Для первичного входа в систему используем данные, введенные на предыдущем шаге. После успешной авторизации мы попадаем на главную страницу, где расположены графики потребления памяти, дискового пространства и swap, а так же графики сетевой нагрузки и загрузки IOPS и базовые сведения о системе: время непрерывной работы севера, версия ОС и модель процессора.


Функционал изменения содержания конфигурационного файла реализован в виде отдельного текстового редактора чем-то напоминающий по цветовому оформлению Sublime, в который добавлена интеграция с Chat GPT. Подключить нейросеть можно в конфигурации самого Nginx UI. Для того, чтобы открыть папку или файл нужно нажать кнопку Modify в правой части строки с файлом или папкой


Конфигурации проходят автоматическое тестирование. После изменения файл можно сразу же отправить «в продакшн», нажав соответствующую кнопку.
В панели используется локальная база пользователей, которых можно создавать, изменять и удалять в отдельном меню. Поддерживается включение двухфакторной авторизации с Google Authenticator. Для работы в веб-терминале будет необходимо авторизоваться дополнительно, используя созданную в ОС учетную запись.


Ещё в панели предусмотрен функционал создания резервных копий конфигураций nginx и UI. Сделать это можно в соответствующем меню.

Чтобы создать резервную копию необходимо нажать на кнопку Create Backup

На ваш компьютер будет загружен zip-архив с кофигурациями. Так же вам потребуется сохранить токен восстановления, который отобразится на экране – без него восстановить настройки Nginx не удастся.
Для восстановления необходимо просто перенести архив в соответствующее поле, ввести токен, выбрать, что будет восстановлено: настройки nginx или настройки UI , или и то, и другое. Далее, после нажатия на кнопку Start Restore выбранные вами настройки будут восстановлены, а Nginx перезапущен.

Данная веб-панель представляет собой своего рода «швейцарский нож» для управления веб-сервером на базе Nginx. Через неё администратор может буквально «на лету» получать данные о состоянии сервера, следить за потреблением ресурсов, изменять конфигурации «на лету», просматривать логи nginx в удобном читабельном формате. При необходимости, можно подключиться к терминалу ОС. Решение имеет приятный и современный графический интерфейс. А встроенная интеграция с Chat GPT может помочь избежать ошибок в конфигурации
Nginx Proxy Manager
Теперь рассмотрим другого представителя веб-интерфейсов для Nginx – Nginx Proxy Manager. Это решение предназначено для управление сервером Nginx в случае, когда он используется в качестве proxy-сервера. Продукт выполнен в виде docker-контейнера – это значит, что для его установки на сервере потребуется развернуть docker. Фактически, оно представляет собой контейнер с nginx и веб-интерфейсом, через который можно этот Nginx настраивать как пограничный proxy-сервер.
Выполним установку. Для обзора мы будем использовать сервер с ОС Ubuntu 22.04.5 и установленными docker и плагином docker-compose.
Подключимся к серверу с docker и создадим docker compose файл с расширением *.yml и откроем его:
touch compose.yml
sudo nano 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
В данной конфигурации мы указали следующие параметры:
Образ, который будет загружен (jc21/nginx-proxy-manager) последней версии
Порты, которые будут прослушиваться контейнером: tcp 80 – порт HTTP, tcp 443 – порт HTTPS и tcp 81 – порт для подключения к веб-панели администратора
Два примонтированных тома из хостовой ОС для хранения данных и сертификатов
Отметим, что подобная конфигурация заявлятется разработчиком как минимально необходимая.
Закроем файл и создадим контейнер:
docker compose up -d

Проверим, что контейнер запущен и работает:
docker ps

подключимся к веб-панели администратора по адресу: http://<IP-адрес_сервера>:81, и мы попадаем на страницу авторизации

Для первого входа введем учетные данные по умолчанию: admin@example.com и пароль changeme
После успешно авторизации нам предлагают сменить информацию об администраторе. Обязательно должно быть изменен адрес электронной почты – другие поля могут остаться неизмененными. Далее задаем новый пароль После чего мы оказываемся на главном окне приложения.


Само окно очень минималистично: на нем нет графиков – только лишь сводная статистика и количестве управляемых хостов, недоступных хостов, хостов пересылки и количестве потоков.

Добавить proxy-хост можно в меню Hosts -> Proxy Hosts -> Add Proxy Host

В открывшемся меню необходимо указать:
доменное имя, по которому будут обращаться пользователи
Адрес или доменное имя хоста и порт , на который будет выполняться пересылка с указанного выше доменного имени
Протокол: http или https
В качестве дополнительных параметров можно указывать Access List, содержащий в себе правила доступа до хоста, блокировку общеизвестных веб-угроз и поддержку веб-сокетов, если таковую требует приложение, находящееся за Proxy.

Так же в отдельном меню можно указать SSL сертификаты и связанные с ними опции.
После добавления данных нажимаем Save и наш хост добавлен.
Для создания списка контроля доступа необходимо перейти в меню Access List и нажать на кнопку «Add Access List»

Во вкладке Details можно указать имя списка и выбрать два параметра: Satisfy Any и Pass Auth to Host

Во вкладке Authorization укажите параметры для простой авторизации через модульNginx ngx_http_auth_basic_module

И, наконец, во вкладке Access можно выполнить настройку самого списка контроля доступа, указывая IP-адреса и подсети и сопоставляя им действия: allow –разрешить доступ – и deny – запретить доступ.

Список построен по принципу – что не разрешено, то запрещено. Правила выполняются сверху вниз до первого совпадения источника.
В меню SSL Certificates осуществляется управление SSL сертификатами, которые используют сайты.

Во вкладке Users происходит управление локальными пользователями системы

В меню Audit Log можно просмотреть локальные логи.

Во вкладке Settings можно настроить, какую страницу будет видеть пользователь при запросе на несуществующий адрес на наш Proxy



В заключении можно отметить, что продукт, хоть и не имеет обширного функционала для мониторинга состояния сервера, хоть и требует дополнительного ПО для работы, но значительно упрощает конфигурацию пограничного proxy сервера на базе nginx, имея при себе функционал блокировки общеизвестных атак и встроенные списки контроля доступа. И со своими задачами ПО справляется хорошо.
В итоге, мы рассмотрели два совершенно разных продукта, имеющих различный функционал и предназначенный для разных задач, но одно они имеют общее – благодаря им, настройка Nginx становится куда проще, нагляднее и понятнее. Сами сервисы имеют приятный глазу графический интерфейс, что упрощает с ним работу. Установка подобных решений может помочь вам упросить взаимодействие с Nginx.
Комментарии (6)
psiklop
16.05.2025 06:50Школьник с комплексами делал? Панель для управления nginx, чем там управлять-то? Добавить чат-гпт и смотреть на ненужные датчики, что? А пульс админу измерить может?
koltykov
16.05.2025 06:50А на angie будет работать?
atkrv
16.05.2025 06:50Что именно?
Часть данных, что рисуют эти UI — смесь stub_status и vts модуля.
Оно совместимо с angie, но, на сколько я помню, одной из первых доработок форка ребятами из ВебСервера был функционал мониторинга angie. Кажется, что он уникален и не будет совместим с этими UI, что описаны в статье.
Nginx Proxy Manager уже поставляется с обычным nginx в комплекте, к слову.
atkrv
16.05.2025 06:50Я бы ещё отметил вопрос безопасности Nginx Proxy Manager — https://www.cvedetails.com/vulnerability-list/vendor_id-20356/product_id-58193/Jc21-Nginx-Proxy-Manager.html?page=1&order=1
ddv88
16.05.2025 06:50Чем меньше на сервере свистоперделок, тем более торчащих через прямой ип, тем ниже уровень провокации для брута, криптолоков и прочих иньекций. А через локалхост ходить не вижу никакого смысла, если уже есть возможность подключится напрямую, тогда уж выгоднее через ssh.
MaximusPrimie
Спасибо! Натолкнули на мысль. Если честно даже не подозревал, что есть такой инструмент, всю дорогу руками конфиг правил.