Je configure donc un serveur nginx avec SSL activé avec une définition de serveur ressemblant à ceci:
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;
...
}
Vous avez l'idée (veuillez pardonner les fautes de frappe).
Quoi qu'il en soit, ce que je me demande c'est; si je renouvelle mon ou mes certificats, y a-t-il un moyen de les installer sans avoir à redémarrer nginx?
Par exemple, si je devais utiliser des liens symboliques à partir de /path/to/public/certificate
et /path/to/private/key
, indiquant mes certificats actuels, aurais-je encore besoin de redémarrer nginx
si je devais simplement les modifier pour pointer vers de nouveaux certificats (renouvelés)? Y a-t-il des alternatives?
la source
nginx reload
et redémarrer Nginx sont deux choses différentes:reload
ne redémarre pas Nginx mais envoie seulement le signal SIGHUP. Le signal SIGHUP est-il suffisant?echo |
dans votre commande? Si je le laisse de côté, je ne reçois pas d'invite. Je voudrais grp la sortie pournotAfter
et ensuite comparer cela à la date actuelle, pour m'envoyer un spam quelques jours avant l'expiration du certificat.echo
tuyau oblige simplement la sortie du shell OpenSSL à revenir à Bash et renvoie la sortie normalement. Cela est nécessaire pour que la sortie propre puisse être utilisée dans les scripts et à des fins d'automatisation, comme si vous aviez planifié. J'ai implémenté de nombreux scripts, comme celui que vous envisagez d'utiliser avec les mêmes fonctionnalités de base.À la réception,
SIGHUP
nginx rechargera la configuration mise à jour, la vérifiera lors de l’ouverture des fichiers journaux et de la lecture des certificats SSL , puis fermera en douceur les processus de travail en s’appuyant sur la configuration précédente.S'il s'avère que nginx ne peut pas lire certains certificats SSL, je continuerai à fonctionner avec une configuration plus ancienne. Autrement dit, il continuera à fonctionner et à traiter les requêtes, peu importe ce que vous avez fait dans vos fichiers de configuration. Même s'ils sont cassés, vos sites Web seront toujours ouverts.
Alors oui, vous n'avez pas besoin de redémarrer nginx et vous risquez de mettre votre serveur hors ligne pendant plus de quelques secondes si vous souhaitez que nginx affiche les certificats actualisés. Il devrait suffire de:
Dans la plupart des distributions actuelles avec systemd utilisé par défaut, vous pouvez également recharger nginx avec la commande suivante:
la source
systemd
vous pouvez également exécutersudo systemctl reload nginx
(ce qui estsudo service nginx reload
mentionné ci-dessus est un alias).service nginx restart
. Je ne me lasse pas de voir à quelle vitesse cela se termine. Cependant, s'il s'agit d'un travail cron, et que je ne le verrai pas, je préférerais procéder à un rechargement pour éviter toute interruption d'une session ou d'une opération en attente qui pourrait être en cours.