¿Qué sucede con las conexiones HTTP y Websocket existentes cuando se recarga la configuración de NGINX?

¿Qué sucede con las conexiones HTTP y Websocket existentes cuando se recarga la configuración de NGINX?

Digamos que tenemos una configuración de implementación azul/verde bastante estándar. Actualmente, NGINX está enviando todo el tráfico al servidor en vivo (AZUL). Luego implementamos una versión actualizada de nuestro código en el servidor inactivo (VERDE). Finalmente, actualizamos la configuración de NGINX para que todo el tráfico HTTP se enrute a VERDE.

Según tengo entendido, NGINX manejará esta recarga con gracia. Todas las solicitudes HTTP futuras se enrutarán a VERDE y todas las solicitudes HTTP pendientes que llegaron a AZUL serán manejadas por AZUL.

Pero ¿qué pasa con WebSockets? Digamos que BLUE tenía diez conexiones WebSocket activas cuando se recargó la configuración. ¿Qué pasa con ellos?

Según tengo entendido sobre la documentación de NGINX, las conexiones finalizarán en 60 segundos si no se envían datos nuevos.

Sin embargo, si los clientes utilizan algún tipo de mantenimiento de actividad o ping, me imagino que las conexiones WebSocket se mantendrán indefinidamente aunque BLUE ya no atienda ningún otro tráfico HTTP.

¿Está mi intuición aquí? Si es así, me imagino que BLUE necesita cerrar las conexiones por sí mismo o el código del lado del cliente, a menos que NGINX tenga una característica que me falta.

Respuesta1

Correcto, las conexiones se mantendrán indefinidamente. Existe una directiva especial para manejar tales casos:

https://nginx.org/en/docs/ngx_core_module.html#worker_shutdown_timeout

información relacionada