El escenario es así, tengo un servidor proxy inverso nginx frente a dos servidores de aplicaciones que son copias de seguridad entre sí, quiero que nginx reenvíe todas las solicitudes de los usuarios al primer servidor de aplicaciones al principio, y si el primer servidor de aplicaciones está inactivo , Quiero que nginx reenvíe todas las solicitudes de los usuarios al segundo servidor de aplicaciones a partir de ese momento, hasta que el segundo servidor de aplicaciones esté inactivo, y nginx debería volver a reenviar todas las solicitudes de los usuarios al primer servidor de aplicaciones, y así sucesivamente. Por supuesto, si ambos servidores de aplicaciones están inactivos, nginx devolverá un error.
Miré configuraciones como el equilibrio de carga ascendente y la configuración de proxy_next_upstream, pero parece que no es realmente lo que estoy buscando aquí. ¿Alguna idea de cómo configurar nginx para mi escenario? Gracias.
Respuesta1
Querrá utilizar la upstream
configuración de nginx para lograr esto.
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;
}
}
La clave aquí es el backup
parámetro, que le dice a nginx que solo utilice ese nodo en caso de que los nodos primarios (es decir, los nodos no etiquetados backup
) no estén disponibles.
Llenodocumentación aquí.
Respuesta2
Después de buscar más, decidí usar OpenResty (https://openresty.org/) para mis necesidades, específicamente el LuaUpstreamNginxModulehttps://github.com/openresty/lua-upstream-nginx-moduley con algunos scripts Lua personalizados, parece funcionar perfectamente para mi escenario.