Gibt es eine programmatische Schnittstelle zur Nginx-Konfiguration?

8

Ich verwende nginx als Load Balancer vor meinen Webserverinstanzen. Ich führe 4 Instanzen des Webservers aus und verteile den Datenverkehr mit nginx gleichmäßig auf sie. Wenn ich eine neue Version bereitstelle, ändere ich die Datei nginx.conf und markiere zuerst 2 der 4 Server, dann starte ich nginx neu. Ich aktualisiere den Servercode und starte die ersten beiden Server neu. Dann bearbeite ich die Datei nginx.conf, um anzuzeigen, dass die ersten beiden Server aktiv sind, und markiere die anderen beiden Server unten. Starten Sie nginx erneut neu. Dann aktualisiere ich die beiden anderen Instanzen und starte sie neu. Aktualisieren Sie erneut die Datei nginx.conf, in der alle Server markiert sind, und starten Sie nginx endgültig neu.

Ich muss diesen Vorgang an manchen Tagen mehrmals durchführen. Das manuelle Ausführen der obigen Schritte stellt sich jedes Mal als fehleranfällig heraus.

Gibt es einen programmgesteuerten Zugriff auf nginx / nginx.conf, damit ich diesen Prozess automatisieren kann?

[Die einzige Möglichkeit, die ich mir derzeit vorstelle, besteht darin, die obigen Schritte in ein Shell-Skript zu schreiben.]

Jayesh
quelle
3
Was Sie tun, scheint sehr seltsam. Set fail_timeoutzu 5s auf jeden von euch Backends, nehmen zwei von ihnen nach unten und NGINX wird , dass abholen und den gesamten Datenverkehr zu den zweiten zwei Knoten umleiten. Aktualisieren Sie Ihren Code, warten Sie 5 Sekunden (oder unabhängig von Ihrem Timeout-Wert), und NGINX verwendet die ersten beiden Server. Schalten Sie dann die zweiten beiden Server aus und wiederholen Sie den Vorgang. NGINX spielt sehr gut mit dieser Art von Setup
Smudge

Antworten:

3

Nein, nginx hat keine Konfigurations-API.

Obwohl es Fälle gibt, in denen Sie Server möglicherweise manuell als ausgefallen markieren müssen, funktioniert die Konfiguration von proxy_next_upstream + fail_timeout im Allgemeinen.

sendmoreinfo
quelle
3

Es gibt jetzt nginx-conf , ein NPM-Modul, das programmgesteuerten Zugriff auf nginx-Konfigurationen bietet.

Steve Bennett
quelle