Meine Seite nutzt zwei App-Server, nämlich app1 und app2, so in der Konfiguration, die ich so etwas wie diese:Kann die "include" -Direktive innerhalb des Upstream-Blocks von nginx verwendet werden?
upstream cluster {
server app1:8080;
server app2:8080;
}
Da jedes Mal, wenn ich den Code ich beiden Server-Prozesse neu zu starten, muß aktualisiert werden, und ich möchte den Dienst ungestörte, werde ich diese Schritte manuell folgen:
Comment
app1
innerhalb vorgeschalteten Blocks, damit es in modifizieren:upstream cluster { #server app1:8080; server app2:8080; }
Run
nginx -s reload
Update-Code auf
app1
und das Server-Programm neu starten und dann uncommentapp1
in Upstream-BlockFühren Sie die Schritte 1-3 für
app2
Ich möchte ein schreiben Skript, um diese mühsame Arbeit zu ersparen, so was ich hoffe, ist dies:
Haben Sie einen Ordner "verfügbar" genannt, die
app1.conf
undapp2.conf
in Form enthält alsserver app1:8080;
haben einen anderen Ordner mit dem Namen "aktiviert", um die Soft-Links von
app1.conf
undapp2.conf
Ändern Sie den Upstream enthalten Cluster in
Also jedes Mal, wenn ich jeden App-Server deaktivieren muss, kann ich einfach rem ove den entsprechenden Soft-Link aus den „freigegeben“ Ordnern, und später kann es wiederherstellen, indem
ln -s
Doch dieser Ansatz läuft gut funktionierte nicht, wie ich eine Fehlermeldung von nginx bekam sagen:
[Emerg]: "include" Richtlinie wird hier nicht ....
ist erlaubt, dass so include
kann nicht nicht in den vorgeschalteten Block gesetzt werden? und ich könnte mir vorstellen, dass ich in einem solchen Szenario nicht alleine bin, den Server manchmal sperrend und aktivierend, wie andere Leute normalerweise damit umgehen?
passieren Sie wissen, welche Ausführung ? –
Ich verwendete die neueste Version zu der Zeit, aber Sie können es leicht testen, indem Sie die Konfiguration ändern und nginx -t zur Überprüfung ausführen. –