Więc konfiguruję serwer nginx z włączoną obsługą SSL z definicją serwera, taką jak:
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;
...
}
Masz pomysł (proszę wybaczyć literówki).
W każdym razie zastanawiam się; jeśli odnówię moje certyfikaty, czy istnieje sposób na ich zainstalowanie bez konieczności ponownego uruchamiania nginx?
Na przykład, jeśli miałbym korzystać z dowiązań symbolicznych /path/to/public/certificate
i /path/to/private/key
, wskazując na mój bieżący certyfikat (certyfikaty), czy nadal musiałbym restartować, nginx
jeśli po prostu zmieniłem je, aby wskazywały nowe (odnowione) certyfikaty? Czy są alternatywy?
źródło
nginx reload
i restartowanie Nginx to dwie różne rzeczy:reload
nie restartuje Nginx, a jedynie wysyła sygnał SIGHUP. Czy sygnał SIGHUP jest wystarczający?echo |
twojego polecenia? Jeśli to pominę, nie otrzymam z powrotem monitu. Chciałbym prześledzić wyniki,notAfter
a następnie porównać je z bieżącą datą, aby spamować się na kilka dni przed wygaśnięciem certyfikatu.echo
potok po prostu sprawia, że powłoka OpenSSL wychodzi z powrotem do Bash i zwraca dane wyjściowe jak zwykle. Jest to konieczne w celu czystego wyjścia do użycia w skryptach i do celów automatyzacji, tak jakby to brzmiało jak planujesz. Wdrożyłem wiele skryptów, takich jak ten, który planujesz, używając tej samej podstawowej funkcjonalności.Po otrzymaniu
SIGHUP
nginx przeładuje zaktualizowaną konfigurację, zweryfikuje ją podczas otwierania plików dziennika i odczytywania certyfikatów SSL , a następnie z wdziękiem zamyka procesy robocze oparte na poprzedniej konfiguracji.Jeśli zdarzy się, że nginx nie może odczytać niektórych certyfikatów SSL, będę nadal działać przy użyciu starszej konfiguracji. W przeciwnym razie będzie nadal działać i przetwarzać żądania bez względu na to, co zrobiłeś z plikami konfiguracyjnymi. Nawet jeśli są zepsute, Twoje strony będą nadal otwarte.
Więc tak, nie musisz ponownie uruchamiać nginx i ryzykować przełączenie serwera w tryb offline na dłużej niż kilka sekund, jeśli chcesz, aby nginx zobaczył zaktualizowane certyfikaty. Powinno wystarczyć:
W większości bieżących dystrybucji z domyślnie używanym systemd możesz również ponownie załadować nginx za pomocą następującego polecenia:
źródło
systemd
można również wykonaćsudo systemctl reload nginx
(do któregosudo service nginx reload
wspomniano powyżej, jest on przypisany).service nginx restart
. Nigdy nie męczy mnie widok, jak szybko się kończy. Jeśli jednak jest to zadanie cron i nie zobaczę żadnego z nich, wolałbym wykonać jakieś przeładowanie, aby uniknąć przerwania jakiejkolwiek trwałej sesji lub trwającej operacji.