Das Szenario sieht folgendermaßen aus: Ich habe einen Nginx-Reverse-Proxy-Server vor zwei App-Servern, die Backups voneinander sind. Ich möchte, dass Nginx alle Benutzeranfragen zuerst an den ersten App-Server weiterleitet. Wenn der erste App-Server ausfällt, soll Nginx ab diesem Zeitpunkt alle Benutzeranfragen an den zweiten App-Server weiterleiten, bis der zweite App-Server ausfällt. Nginx soll dann wieder alle Benutzeranfragen an den ersten App-Server weiterleiten und so weiter und so fort. Wenn beide App-Server ausgefallen sind, gibt Nginx natürlich einen Fehler zurück.
Ich habe mir Einstellungen wie Upstream-Lastausgleich und Proxy_next_upstream-Einstellungen angesehen, aber es scheint nicht wirklich das zu sein, wonach ich hier suche. Irgendeine Idee, wie ich Nginx für mein Szenario konfiguriere? Danke.
Antwort1
upstream
Um dies zu erreichen, sollten Sie die Nginx-Konfiguration verwenden .
upstream mybackend {
# first app server
server 192.168.0.1;
# second app server
server 192.168.0.2 backup;
}
server {
...
location / {
proxy_pass http://mybackend;
}
}
Der Schlüssel ist hier der backup
Parameter, der nginx anweist, diesen Knoten nur dann zu verwenden, wenn primäre Knoten (d. h. nicht markierte Knoten backup
) nicht verfügbar sind.
VollDokumentation hier.
Antwort2
Nach längerem Suchen entschied ich mich für OpenResty (https://openresty.org/) für meine Bedürfnisse, insbesondere das LuaUpstreamNginxModulehttps://github.com/openresty/lua-upstream-nginx-moduleund mit einigen benutzerdefinierten Lua-Skripten scheint es für mein Szenario perfekt zu funktionieren.