Yo uso nginx como proxy inverso. Cada vez que actualizo la configuración para usar
sudo "cp -r #{nginx_config_path}* /etc/nginx/sites-enabled/"
sudo "kill -s HUP `cat /var/run/nginx.pid`"
Me enfrento a un breve tiempo de inactividad. ¿Cómo puedo evitar eso?
sites-enabled
, no copiarlo. No está relacionado con su problema particular, pero es posible que desee analizarlo.kill HUP
es la forma de hacer una recarga elegante en nginx.Respuestas:
Correr
service nginx reload
o/etc/init.d/nginx reload
Hará una recarga en caliente de la configuración sin tiempo de inactividad. Si tiene solicitudes pendientes, habrá procesos nginx persistentes que manejarán esas conexiones antes de que muera, por lo que es una forma extremadamente elegante de recargar configuraciones.
A veces es posible que desee anteponer
sudo
fuente
SIGHUP
al proceso maestro nginx. No debería haber una diferencia. nginx.org/en/docs/control.htmlcat $PIDFILE
|| echo -n "no se puede recargar"service nginx reload
ynginx -s reload
? Si ejecuto el primero, obtengo este resultado:Reloading nginx configuration: nginx.
pero mis cambios no se actualizan. Si ejecuto este último, no obtengo salida, pero mis cambios se reflejan.log_not_found
directiva, pero descubrí que tenía que reiniciar para que funcione. ¿Supongo que la recarga no funciona para todas las directivas?correr
/usr/sbin/nginx -s reload
Consulte http://wiki.nginx.org/CommandLine para obtener más opciones de línea de comandos.
fuente
No, usted es incorrecto, se supone que no debe enfrentar ningún tiempo de inactividad con el procedimiento que describe. (Nginx no solo puede recargar la configuración sobre la marcha sin ningún tiempo de inactividad, sino incluso la actualización del ejecutable sobre la marcha, aún sin ningún tiempo de inactividad).
Según http://nginx.org/docs/control.html#reconfiguration , enviar la
HUP
señal a nginx asegura que se realice un reinicio correcto y, si los archivos de configuración son incorrectos, se abandona todo el procedimiento y usted " se queda con el nginx como antes de enviar laHUP
señal. En ningún momento debe ser posible ningún tiempo de inactividad.fuente
Por lo general, la recarga del archivo de configuración de un servicio no debería afectar el servicio en ejecución. Sin embargo, esto depende de cómo
SIGHUP
se procese la señal.Si un servicio específico está experimentando un tiempo de inactividad durante la recarga, esto puede evitarse ejecutando el mismo servicio en varios servidores, preferiblemente utilizando un equilibrador de carga. En este caso, puede sacar un servidor a la vez y volver a cargarlo / reiniciarlo. Luego, se puede volver a agregar después de confirmar que está bien.
fuente