Всем привет! Меня зовут Александр, и я системный инженер в облачном провайдере 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.

Вывод команды bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ install
Вывод команды bash -c "$(curl -L https://raw.githubusercontent.com/0xJacky/nginx-ui/main/install.sh)" @ install

Удалить 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 в правой части строки с файлом или папкой

Список конфигурационных файлов Nginx
Список конфигурационных файлов Nginx
Окно редактора конфигурации
Окно редактора конфигурации

Конфигурации проходят автоматическое тестирование. После изменения файл можно сразу же отправить «в продакшн», нажав соответствующую кнопку.

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

Меню настроек пользователей
Меню настроек пользователей
Список пользователей системы
Список пользователей системы

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

еню создания резервных копий
еню создания резервных копий

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

Создание резервной копии
Создание резервной копии

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

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

Окно завершения восстановления NginxUI из резервной копии
Окно завершения восстановления NginxUI из резервной копии

Данная веб-панель представляет собой своего рода «швейцарский нож» для управления веб-сервером на базе 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
Содержимое файла compose.yml
Содержимое файла 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-контейнера с Nginx Proxy Manager
Создание docker-контейнера с Nginx Proxy Manager

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

docker ps
Контейнер запущен и работает
Контейнер запущен и работает

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

Страница авторизации в Nginx Proxy Manager
Страница авторизации в Nginx Proxy Manager

Для первого входа введем учетные данные по умолчанию: admin@example.com и пароль changeme

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

Окно изменения данных пользователя
Окно изменения данных пользователя
Окно изменения пароля пользователя
Окно изменения пароля пользователя

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

Стартовое окно
Стартовое окно

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

Добавление нового proxy хоста с Nginx
Добавление нового proxy хоста с Nginx

В открывшемся меню необходимо указать:

  • доменное имя, по которому будут обращаться пользователи

  • Адрес или доменное имя хоста и порт , на который будет выполняться пересылка с указанного выше доменного имени

  • Протокол: http или https

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

Окно добавления нового Proxy хоста
Окно добавления нового Proxy хоста

Так же в отдельном меню можно указать SSL сертификаты и связанные с ними опции.

После добавления данных нажимаем Save и наш хост добавлен.

Для создания списка контроля доступа необходимо перейти в меню Access List и нажать на кнопку «Add Access List»

Создание нового списка контроля доступа
Создание нового списка контроля доступа

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

Окно создания списка контроля доступа
Окно создания списка контроля доступа

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

Окно добавления HTTP авторизации
Окно добавления HTTP авторизации

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

Окно настройки доступа в ACL
Окно настройки доступа в ACL

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

В меню SSL Certificates осуществляется управление SSL сертификатами, которые используют сайты.

Окно добавления SSL сертификатов
Окно добавления SSL сертификатов

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

Окно управления пользователями
Окно управления пользователями

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

Меню логов сервиса
Меню логов сервиса

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

Меню настроек
Меню настроек
Переход в меню выбора ответа сервера
Переход в меню выбора ответа сервера
Варианты ответа сервера на запрос несуществующего адреса
Варианты ответа сервера на запрос несуществующего адреса

В заключении можно отметить, что продукт, хоть и не имеет обширного функционала для мониторинга состояния сервера, хоть и требует дополнительного ПО для работы, но значительно упрощает конфигурацию пограничного proxy сервера на базе nginx, имея при себе функционал блокировки общеизвестных атак и встроенные списки контроля доступа. И со своими задачами ПО справляется хорошо.

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

Комментарии (1)


  1. MaximusPrimie
    16.05.2025 06:50

    Спасибо! Натолкнули на мысль. Если честно даже не подозревал, что есть такой инструмент, всю дорогу руками конфиг правил.