Поэтому я настраиваю сервер nginx с включенным SSL с определением сервера примерно так:
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;
...
}
Вы поняли (пожалуйста, прости любые опечатки).
Во всяком случае, то, что мне интересно, это; если я продляю свои сертификаты, есть ли способ установить их без перезапуска nginx?
Например, если бы я использовал символические ссылки от /path/to/public/certificate
и /path/to/private/key
, указывая на мой текущий сертификат (ы), мне все равно нужно было бы перезапустить, nginx
если бы я просто изменил их, чтобы они указывали на новые (обновленные) сертификаты? Есть ли альтернативы?
источник
nginx reload
и перезапуск Nginx - это две разные вещи:reload
не перезапускать Nginx, а только отправлять ему сигнал SIGHUP. Достаточно ли сигнала SIGHUP?echo |
вашей команды? Если я пропущу это, я не получу подсказку назад. Я хотел бы получить выходные данныеnotAfter
и сравнить их с текущей датой, чтобы спамить себя за пару дней до истечения срока действия сертификата.echo
труба просто заставляет оболочку OpenSSL чисто выйти обратно в Bash и вернуть вывод как обычно. Это необходимо для чистого выхода для использования в сценариях и для целей автоматизации, как будто вы планируете. Я реализовал множество сценариев, таких как тот, который вы планируете, используя те же основные функции.При получении
SIGHUP
nginx перезагрузит обновленную конфигурацию, проверит ее при открытии файлов журнала и чтении сертификатов SSL , а затем корректно завершит рабочие процессы, полагаясь на предыдущую конфигурацию.Если случится так, что nginx не сможет прочитать некоторые сертификаты SSL, я продолжу работать, используя более старую конфигурацию. Иначе говоря, он продолжит функционировать и обрабатывать запросы независимо от того, что вы сделали с вашими конфигурационными файлами. Даже если они сломаны, ваши сайты все равно будут открыты.
Так что да, вам не нужно перезапускать nginx и рисковать переводом своего сервера в автономный режим более чем на несколько секунд, если вы хотите, чтобы nginx видел обновленные сертификаты. Этого должно быть достаточно для:
В большинстве современных дистрибутивов с systemd, используемым по умолчанию, вы также можете перезагрузить nginx с помощью следующей команды:
источник
systemd
вы поддерживаете, вы также можете запускатьsudo systemctl reload nginx
(на которыеsudo service nginx reload
выше ссылается).service nginx restart
. Я никогда не устаю смотреть, как быстро это завершается. Однако, если он находится в работе cron, и я не буду видеть ничего из этого, я бы предпочел выполнить какую-то перезагрузку, чтобы избежать прерывания какого-либо постоянного сеанса или ожидающей операции, которая может продолжаться.