Existe-t-il une interface de programmation pour la configuration de nginx?

8

J'utilise nginx comme équilibreur de charge devant mes instances de serveur Web. J'exécute 4 instances du serveur Web et répartis le trafic de manière égale entre elles à l'aide de nginx. Lorsque je déploie une nouvelle version - je change le nginx.conf et marque les 2 premiers des 4 serveurs vers le bas, puis redémarre nginx. Je mets à jour le code du serveur et redémarre les 2 premiers serveurs. Ensuite, je modifie nginx.conf pour indiquer que les 2 premiers serveurs sont actifs et marque les 2 autres, puis redémarrez nginx. Ensuite, je mets à jour et redémarre deux autres instances. Mettez à jour le nginx.conf en marquant tous les serveurs et redémarrage final de nginx.

Je dois répéter ce processus plusieurs fois sur certains jours. L'exécution manuelle des étapes ci-dessus à chaque fois s'avère sujette aux erreurs.

Existe-t-il un accès programmatique à nginx / nginx.conf pour que je puisse automatiser ce processus?

[La seule façon que j'imagine en ce moment est d'écrire les étapes ci-dessus dans le script shell]

Jayesh
la source
3
Ce que vous faites semble très étrange. Réglez fail_timeoutsur 5s sur chacun de vos backends, enlevez deux d'entre eux et NGINX récupérera cela et redirigera tout le trafic vers les deux seconds nœuds. Mettez à jour votre code, attendez 5 secondes (ou quelle que soit votre valeur d'expiration) et NGINX commencera à utiliser les deux premiers serveurs, puis supprimez les deux autres et répétez. NGINX joue très bien avec ce genre de configuration
Smudge

Réponses:

3

Non, nginx n'a pas d'API de configuration.

Bien qu'il y ait des cas où vous devrez peut-être marquer manuellement les serveurs comme étant hors service, la configuration générale de proxy_next_upstream + fail_timeout fonctionnera.

sendmoreinfo
la source
3

Il existe maintenant nginx-conf , un module NPM qui fournit un accès par programme aux configurations nginx.

Steve Bennett
la source