Модуль ngx_http_upstream_conf_module

Пример конфигурации
Директивы
     upstream_conf

Модуль ngx_http_upstream_conf_module позволяет оперативно настраивать группы серверов при помощи простого HTTP-интерфейса без необходимости перезапуска nginx. Группа серверов http или stream должна находиться в разделяемой памяти.

Этот модуль был заменён модулем ngx_http_api_module в версии 1.13.0.

Модуль доступен как часть коммерческой подписки.

Пример конфигурации

upstream backend {
    zone upstream_backend 64k;

    ...
}

server {
    location /upstream_conf {
        upstream_conf;
        allow 127.0.0.1;
        deny all;
    }
}

Директивы

Синтаксис: upstream_conf;
Умолчание:
Контекст: location

Активирует HTTP-интерфейс для настройки групп серверов в содержащем location. Доступ в location следует ограничить.

С помощью команд настройки можно:

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

Команда настройки состоит из параметров, передаваемых в аргументах запроса, например:

http://127.0.0.1/upstream_conf?upstream=backend

Поддерживаются следующие параметры:

stream=
Выбирает группу серверов stream. Если параметр не задан, будет выбрана группа серверов http.
upstream=имя
Выбирает группу серверов для работы. Параметр является обязательным.
id=число
Выбирает сервер для просмотра, изменения или удаления.
remove=
Удаляет сервер из группы.
add=
Добавляет новый сервер в группу.
backup=
Необходим для добавления запасного сервера.
До версии 1.7.2 параметр backup= требовался также для просмотра, изменения или удаления существующих запасных серверов.
server=адрес
То же, что и параметр “адрес” сервера группы http или stream.

При добавлении сервер можно задать в виде доменного имени. В этом случае любые изменения IP-адресов, соответствующих доменному имени сервера, отслеживаются и автоматически применяются к конфигурации группы без необходимости перезапуска nginx (1.7.2). Для этого в блоке http или stream должна быть задана директива “resolver”. См. также параметр “resolve” сервера группы http или stream.

service=имя
То же, что и параметр “service” сервера группы http или stream (1.9.13).
weight=число
То же, что и параметр “weight” сервера группы http или stream.
max_conns=число
То же, что и параметр “max_conns” сервера группы http или stream.
max_fails=число
То же, что и параметр “max_fails” сервера группы http или stream.
fail_timeout=время
То же, что и параметр “fail_timeout” сервера группы http или stream.
slow_start=время
То же, что и параметр “slow_start” сервера группы http или stream.
down=
То же, что и параметр “down” сервера группы http или stream.
drain=
Переводит сервер группы серверов http в режим “draining” (1.7.5). В этом режиме на сервер будут проксироваться только привязанные к нему запросы.
up=
Параметр, обратный по значению параметру “down” сервера группы http или stream.
route=строка
То же, что и параметр “route” сервера группы http.

Первые три параметра выбирают объект. Объектом может быть либо группа серверов http или stream, либо отдельный сервер. Если остальные параметры не указаны, то показывается конфигурация выбранной группы или сервера.

Например, команда для просмотра конфигурации всей группы выглядит следующим образом:

http://127.0.0.1/upstream_conf?upstream=backend

Для просмотра конфигурации отдельного сервера следует указать его идентификатор:

http://127.0.0.1/upstream_conf?upstream=backend&id=42

Для добавления нового сервера в группу следует указать его адрес в параметре “server=”. Если остальные параметры не указаны, то при добавлении сервера их значения будут установлены по умолчанию (см. директиву “server” для http или stream).

Например, команда для добавления нового основного сервера в группу выглядит следующим образом:

http://127.0.0.1/upstream_conf?add=&upstream=backend&server=127.0.0.1:8080

Добавление нового запасного сервера происходит следующим образом:

http://127.0.0.1/upstream_conf?add=&upstream=backend&backup=&server=127.0.0.1:8080

Добавление нового основного сервера с нестандартными значениями параметров и с пометкой его как постоянно недоступного (“down”) происходит следующим образом:

http://127.0.0.1/upstream_conf?add=&upstream=backend&server=127.0.0.1:8080&weight=2&down=

Для удаления сервера следует указать его идентификатор:

http://127.0.0.1/upstream_conf?remove=&upstream=backend&id=42

Пометка существующего сервера как постоянно недоступного (“down”) происходит следующим образом:

http://127.0.0.1/upstream_conf?upstream=backend&id=42&down=

Изменение адреса существующего сервера происходит следующим образом:

http://127.0.0.1/upstream_conf?upstream=backend&id=42&server=192.0.2.3:8123

Изменение других параметров существующего сервера происходит следующим образом:

http://127.0.0.1/upstream_conf?upstream=backend&id=42&max_fails=3&weight=4

Вышеприведённые примеры актуальны для группы серверов http. Аналогичные примеры для группы серверов stream требуют указания параметра “stream=”.