Nginx devuelve 502 mientras el backend se reinicia. ¿Cómo puedo hacer que el proxy nginx vuelva a intentar N veces con M segundos de retraso? ¿Hay un complemento u otra cosa?
16
Descubrí que Nginx tardó ~ 2 segundos en agotar los intentos si especificabas cientos de instancias del mismo backend:
server localhost:8080 max_fails=0;
server localhost:8080 max_fails=0;
server localhost:8080 max_fails=0;
server localhost:8080 max_fails=0;
(.... er, repita según sea necesario!)
Sí, un error horrendo, pero agrega un grado de tenacidad ...
Incluso peor que eso, podrías usar:
server localhost:8080 max_fails=0;
server localhost:80 backup;
Suponiendo que Nginx se está ejecutando en el puerto 80, esto intentaría recorrer continuamente la solicitud alrededor de Nginx hasta que localhost: 8080 responda. Es decir, vuelva a intentar un número infinito (?) De veces con cero segundos de retraso.
Volveré a mi celda acolchada ahora ...
Si su instalación de nginx tiene soporte para Lua, puede mantener el cliente durante algún tiempo con el método de suspensión. La operación no bloquea y no bloquea al trabajador. Tenga en cuenta que el usuario no puede ser retenido infinitamente, ya que finalmente pueden ocurrir algunos otros tiempos de espera de socket / firewall relacionados con la red.
Luego, en su lista ascendente, debe agregar el servidor anterior como respaldo para mantener un cliente.
Y esto debe incluirse en su especificación de ubicación aproximada:
fuente
lua
módulo a nginx en ubuntu 17.04 ejecute:sudo apt-get install libnginx-mod-http-lua
Lo más parecido que conozco es este proyecto , pero nunca lo usé. Sé que el barniz tiene un control de fondo, tal vez quieras echarle un vistazo.
fuente