Então, eu estou configurando um servidor nginx com SSL ativado com uma definição de servidor algo como:
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;
...
}
Você entendeu (por favor, perdoe qualquer erro de digitação).
Enfim, o que eu quero saber é; se eu renovar meus certificados, existe uma maneira de instalá-los sem precisar reiniciar o nginx?
Por exemplo, se eu usasse links simbólicos /path/to/public/certificate
e /path/to/private/key
, apontando para o (s) meu (s) certificado (s) atual (is), ainda precisaria reiniciar nginx
se eu simplesmente os alterasse para apontar para novos (renovados) certificados? Existem alternativas?
fonte
nginx reload
e reiniciar o Nginx são duas coisas diferentes:reload
não reinicia o Nginx, mas apenas envia o sinal SIGHUP. O sinal SIGHUP é suficiente?echo |
seu comando? Se eu deixar de fora, não recebo um aviso de volta. Gostaria de saudar a saídanotAfter
e compará-la com a data atual, para enviar spam alguns dias antes do vencimento do certificado.echo
pipe faz com que o shell OpenSSL saia de volta para Bash e retorne a saída normalmente. Isso é necessário para que a saída limpa seja usada em scripts e para fins de automação, como parece que você está planejando. Eu implementei vários scripts como o que você está planejando usando a mesma funcionalidade básica.Ao receber, o
SIGHUP
nginx recarregará a configuração atualizada, verifique-a enquanto abre arquivos de log e lê certificados SSL e , em seguida, encerre normalmente os processos de trabalho que dependem da configuração anterior.Se acontecer que o nginx não consegue ler alguns certificados SSL, continuarei executando com a configuração mais antiga. Em outras palavras, continuará funcionando e processando solicitações, independentemente do que você fez com seus arquivos de configuração. Mesmo se estiverem quebrados, seus sites ainda serão abertos.
Portanto, sim, você não precisa reiniciar o nginx e corre o risco de deixar o servidor offline por mais de alguns segundos, se desejar que o nginx veja certificados atualizados. Deve ser o suficiente para:
Na maioria das distribuições atuais com o systemd usado por padrão, você também pode recarregar o nginx com o seguinte comando:
fonte
systemd
você também pode executarsudo systemctl reload nginx
(o que foisudo service nginx reload
mencionado acima).service nginx restart
. Eu nunca me canso de ver o quão rápido ele é concluído. No entanto, se estiver em um trabalho cron, e eu não estiver vendo nada disso, prefiro fazer algum tipo de recarregamento para evitar a interrupção de qualquer tipo de sessão persistente ou operação pendente que possa estar em andamento.