Есть ли программный интерфейс для конфигурации nginx?

8

Я использую nginx в качестве балансировщика нагрузки перед экземплярами своего веб-сервера. Я запускаю 4 экземпляра веб-сервера и равномерно распределяю трафик между ними с помощью nginx. При развертывании новой версии - я изменяю nginx.conf и отмечаю сначала 2 из 4 серверов, а затем перезагружаю nginx. Я обновляю код сервера и перезагружаю первые 2 сервера. Затем я редактирую nginx.conf, чтобы указать, что первые 2 сервера работают, а остальные 2 отмечаем, снова перезапустите nginx. Затем я обновляю и перезапускаю два других экземпляра. Снова обновите nginx.conf, помечая все серверы, и завершите перезапуск nginx.

Я должен сделать этот процесс несколько раз в течение нескольких дней. Выполнение вышеуказанных шагов вручную каждый раз оказывается подверженным ошибкам.

Есть ли программный доступ к nginx / nginx.conf, чтобы я мог автоматизировать этот процесс?

[Единственный способ, который я представляю себе сейчас, - это написать описанные выше шаги в сценарии оболочки]

Jayesh
источник
3
То, что вы делаете, кажется очень странным. Установите fail_timeoutзначение 5 с на каждом из ваших бэкэндов, уберите два из них, и NGINX подхватит это и перенаправит весь трафик на вторые два узла. Обновите свой код, подождите 5 секунд (или любое другое значение времени ожидания), и NGINX начнет использовать первые два сервера, затем отключите два вторых и повторите. NGINX очень хорошо играет с такими настройками
Smudge

Ответы:

3

Нет, nginx не имеет API конфигурации.

Хотя бывают случаи, когда вам может потребоваться вручную пометить серверы как отключенные, обычно настройка proxy_next_upstream + fail_timeout будет работать.

sendmoreinfo
источник
3

Теперь существует nginx-conf , модуль NPM, который обеспечивает программный доступ к конфигурациям nginx.

Стив Беннетт
источник