Я использую nginx в качестве балансировщика нагрузки перед экземплярами своего веб-сервера. Я запускаю 4 экземпляра веб-сервера и равномерно распределяю трафик между ними с помощью nginx. При развертывании новой версии - я изменяю nginx.conf и отмечаю сначала 2 из 4 серверов, а затем перезагружаю nginx. Я обновляю код сервера и перезагружаю первые 2 сервера. Затем я редактирую nginx.conf, чтобы указать, что первые 2 сервера работают, а остальные 2 отмечаем, снова перезапустите nginx. Затем я обновляю и перезапускаю два других экземпляра. Снова обновите nginx.conf, помечая все серверы, и завершите перезапуск nginx.
Я должен сделать этот процесс несколько раз в течение нескольких дней. Выполнение вышеуказанных шагов вручную каждый раз оказывается подверженным ошибкам.
Есть ли программный доступ к nginx / nginx.conf, чтобы я мог автоматизировать этот процесс?
[Единственный способ, который я представляю себе сейчас, - это написать описанные выше шаги в сценарии оболочки]
fail_timeout
значение 5 с на каждом из ваших бэкэндов, уберите два из них, и NGINX подхватит это и перенаправит весь трафик на вторые два узла. Обновите свой код, подождите 5 секунд (или любое другое значение времени ожидания), и NGINX начнет использовать первые два сервера, затем отключите два вторых и повторите. NGINX очень хорошо играет с такими настройкамиОтветы:
Нет, nginx не имеет API конфигурации.
Хотя бывают случаи, когда вам может потребоваться вручную пометить серверы как отключенные, обычно настройка proxy_next_upstream + fail_timeout будет работать.
источник
Теперь существует nginx-conf , модуль NPM, который обеспечивает программный доступ к конфигурациям nginx.
источник