1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/oschina-nginx-http-upstreams-control-module

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
README.CN.md 8.8 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 23:12 39c9733

Модуль для мониторинга и управления конфигурацией nginx на основе web

Данный модуль предназначен для отслеживания и контроля конфигурации upstream в nginx.
Модуль позволяет просматривать конфигурацию upstream в режиме реального времени, а также изменять её онлайн без необходимости перезапускать nginx или редактировать файл конфигурации nginx.

Установка

  • Зависимости модуля: Lua 5.2 и Lua-cjson.

    • Lua 5.2;
    • Lua-cjson.
  • Компиляция nginx (версия: nginx-1.9.8):

    • --add-module=path/to/src/directory;
    • --with-cc-opt="-I /usr/include/lua5.2";
    • --with-ld-opt="-l lua5.2 -L /usr/lib/i386-linux-gnu".
  • Копирование содержимого каталога html в каталог nginx html.

Конфигурация

Добавьте следующее в файл nginx.conf:

location ~^/upstreams {    

        upstreams_admin         on;    

        auth_basic              "valid user";    

        auth_basic_user_file     /usr/local/nginx/conf/oschina_pw;

        ui_lua_file              /usr/local/nginx/html/ui.lua;

        timeout                  3;

}  

Использование

Доступ к странице через браузер по адресу http://yourdomian/upstreams.

Команды конфигурации

upstreams_admin

Включает или отключает функцию мониторинга upstream. Для включения установите значение «on», для отключения — «off». Пример: upstreams_admin on.

auth_basic

См. соответствующую инструкцию nginx.

auth_basic_user_file

См. соответствующую инструкцию nginx.

ui_lua_file

Путь к файлу сценария пользовательского интерфейса (файл сценария Lua). Если не указано, по умолчанию используется путь /usr/local/nginx/html/ui.lua. Пример: ui_lua_file /usr/local/nginx/html/myui.lua.

timeout

Время ожидания для обновления конфигурации upstream (в секундах). По умолчанию — 3 секунды. Пример: timeout 5.

API

Интерфейс запроса конфигурации

GET /upstreams — доступ через веб-клиент.

Обратный вызов интерфейса UI

(Lua) write_html(data) — обратный вызов на сервере nginx.

Интерфейсы Keepalive и iphash обновления

POST /upstreams_update — запрос с параметрами:

{
    method:'update',
    backend:?,
    ip_hash:?,
    keepalive:?
}

Ответ:

response:
{
    code:?,
    message:'?'
}

Описание:

— Ответ в формате JSON. — method: указывает тип запроса, значение фиксировано как строка «update», что означает обновление конфигурации ip_hash и keepalive для backend. — backend: индекс backend (начиная с 0), который соответствует порядку бэкэндов в файле конфигурации nginx. — ip_hash: новое значение ip_hash, может быть только 0 или 1. — keepalive: новое значение keepalive, 0 или положительное целое число, где 0 означает отключение keepalive, а положительное число — количество кэша keepalive (см. соответствующую инструкцию aginx). — code: код возврата. 0 — успешное обновление конфигурации upstream. 1 — обработка сервера превысила время ожидания. 2 — ошибка обновления. 3 — сервер занят. 4 — ошибка параметров запроса. 5 — неизвестная ошибка. — message: сообщение, соответствующее коду возврата.

Интерфейс редактирования параметров сервера upstream

POST /upstreams_edit — запрос с параметрами:

{
    method:'edit',
    backend:?,
    server:?,
    weight:?,
    backup:?,
    max_fails:?,
    fail_timeout:?
}

Ответ:

response:
{
    code:?,
    message:'?'
}

Описание:

— Ответ в формате JSON. — method: указывает тип запроса, значение фиксировано как строка «edit», что означает обновление конфигурации определённого сервера в backend. — backend: индекс backend (начиная с 0), соответствующий порядку бэкэндов в файле конфигурации nginx. — server: индекс сервера (начиная с 0), соответствующий порядку серверов в одном из бэкэндов файла конфигурации nginx. — weight: см. соответствующую инструкцию aginx. — backup: указывает, является ли сервер резервным, может быть 0 или 1, где 0 — не резервный, а 1 — резервный. — max_fails: см. соответствующую инструкцию aginx. — fail_timeout: см. соответствующую инструкцию aginx. — code: код возврата. 0 — успешное обновление конфигурации upstream. 1 — обработка сервера превысила время ожидания. 2 — ошибка обновления. 3 — сервер занят. 4 — ошибка параметров запроса. 5 — неизвестная ошибка. — message: сообщение, соответствующее коду возврата.

Интерфейс запуска и остановки сервера upstream

POST /upstreams_enable — запрос с параметрами:

{
    method:'enable',
    backend:?,
    server:?,
    down:?
}

Ответ:

response:
{
    code:?,
    message:'?'
}

Описание:

— Ответ в формате JSON. — method: указывает тип запроса, значение фиксировано как строка «enable», что означает запуск или остановку определённого сервера в upstream. — backend: индекс backend (начиная с 0), соответствующий порядку бэкэндов в файле конфигурации nginx. — server: индекс сервера (начиная с 0), соответствующий порядку серверов в одном из бэкэндов файла конфигурации nginx. — down: указывает, остановлен ли сервер, может быть 0 или 1, где 0 — запуск, а 1 — остановка. — code: код возврата. 0. Успешное обновление конфигурации upstream.

  1. Тайм-аут обработки на сервере.
  2. Ошибка обновления.
  3. Сервер занят.
  4. Ошибка в параметрах запроса.
  5. Неизвестная ошибка.

message: текст сообщения, соответствующий коду возврата.

Самостоятельное создание пользовательского интерфейса

Вы можете настроить собственный интерфейс ответа с помощью API следующим образом:

  • использовать скрипт Lua для создания HTML-страницы ответа, которая будет вызываться сервером при выполнении запроса к WEB-интерфейсу;
  • использовать клиентский скрипт, такой как JavaScript, для вызова AJAX-интерфейса для обновления конфигурации upstream.

Об авторе

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/oschina-nginx-http-upstreams-control-module.git
git@api.gitlife.ru:oschina-mirror/oschina-nginx-http-upstreams-control-module.git
oschina-mirror
oschina-nginx-http-upstreams-control-module
oschina-nginx-http-upstreams-control-module
master