Así que estoy configurando un servidor nginx con SSL habilitado con una definición de servidor similar a:
server {
listen :80;
listen [::]:80;
server_name example.org;
root /foo/bar;
ssl on;
ssl_certificate /path/to/public/certificate;
ssl_certificate_key /path/to/private/key;
...
}
Entiendes la idea (perdona cualquier error tipográfico).
De todos modos, lo que me pregunto es; si renuevo mis certificados, ¿hay alguna forma de instalarlos sin tener que reiniciar nginx?
Por ejemplo, si tuviera que usar enlaces simbólicos desde /path/to/public/certificate
y /path/to/private/key
, apuntando a mis certificados actuales, ¿aún tendría que reiniciar nginx
si simplemente cambiara estos para señalar nuevos certificados (renovados)? ¿Hay alternativas?
fuente
nginx reload
y reiniciar Nginx son dos cosas diferentes:reload
no reinicia Nginx sino que solo le envía la señal SIGHUP. ¿La señal SIGHUP es suficiente?echo |
tu comando? Si lo dejo afuera, no recibo un aviso de regreso. Me gustaría obtener el resultadonotAfter
y luego compararlo con la fecha actual, para enviarme un correo no deseado un par de días antes de que caduque el certificado.echo
tubería simplemente hace que el shell de OpenSSL salga limpiamente de nuevo a Bash y devuelva la salida de forma normal. Esto es necesario para que la salida limpia se use en scripts y para fines de automatización, como parece que está planeando. He implementado numerosas secuencias de comandos como la que está planeando usar esa misma funcionalidad básica.Al recibir,
SIGHUP
nginx volverá a cargar la configuración actualizada, la verificará mientras abre los archivos de registro y lee los certificados SSL , luego cerrará con gracia los procesos de trabajo que dependen de la configuración anterior.Si sucede que nginx no puede leer algunos certificados SSL, continuaré ejecutándome con una configuración anterior. De lo contrario, seguirá funcionando y procesando solicitudes sin importar lo que haya hecho con sus archivos de configuración. Incluso si están rotos, sus sitios web aún se abrirán.
Entonces, sí, no tiene que reiniciar nginx y arriesgarse a poner su servidor fuera de línea por más de unos segundos si desea que nginx vea certificados actualizados. Debería ser suficiente para:
En la mayoría de las distribuciones actuales con systemd usado por defecto, también puede recargar nginx con el siguiente comando:
fuente
systemd
también puede ejecutarsudo systemctl reload nginx
(lo que sesudo service nginx reload
menciona anteriormente es alias).service nginx restart
. Nunca me canso de ver qué tan rápido se completa. Sin embargo, si está en un trabajo cron, y no veré nada de eso, prefiero hacer algún tipo de recarga para evitar interrumpir cualquier tipo de sesión persistente u operación pendiente que pueda estar en curso.