Nginx config recarregar sem tempo de inatividade

101

Eu uso o nginx como um proxy reverso. Sempre que eu atualizar a configuração para ele usando

sudo "cp -r #{nginx_config_path}* /etc/nginx/sites-enabled/"
sudo "kill -s HUP 'cat /var/run/nginx.pid'"

Eu enfrento um breve tempo de inatividade. Como posso evitar isso?

    
por Saurav Shah 11.04.2012 / 19:13

4 respostas

159

Executar service nginx reload ou /etc/init.d/nginx reload

Ele fará um recarregamento da configuração sem tempo de inatividade. Se você tiver solicitações pendentes, haverá processos nginx remanescentes que manipularão essas conexões antes que ela morra, por isso é uma maneira extremamente elegante de recarregar as configurações.

Às vezes, você pode querer preceder com sudo

    
por 11.04.2012 / 19:24
59

Executar /usr/sbin/nginx -s reload

Veja link para mais opções de linha de comando.

    
por 27.07.2015 / 15:46
8

Não, você está incorreto, você não deve enfrentar qualquer tempo de inatividade com o procedimento descrito. (O Nginx pode não apenas recarregar a configuração sem perder tempo, mas até mesmo atualizar o executável na hora, ainda sem tempo de inatividade.)

De acordo com o link , enviar o sinal HUP para o nginx garante que ele execute uma reinicialização normal, e, se os arquivos de configuração estiverem incorretos, todo o procedimento será abandonado e você ficará com o nginx como antes de enviar o sinal HUP . Em nenhum momento qualquer tempo de inatividade deve ser possível.

In order for nginx to re-read the configuration file, a HUP signal should be sent to the master process. The master process first checks the syntax validity, then tries to apply new configuration, that is, to open log files and new listen sockets. If this fails, it rolls back changes and continues to work with old configuration.

    
por 22.06.2015 / 18:58
2

Geralmente, o recarregamento do arquivo de configuração de um serviço não deve afetar o serviço em execução. No entanto, isso depende de como o sinal SIGHUP é processado.

Se um serviço específico estiver passando por um tempo de inatividade durante o recarregamento, isso poderá ser contornado executando-se o mesmo serviço em vários servidores, de preferência usando um balanceador de carga. Nesse caso, você pode remover um servidor de cada vez e recarregá-lo / reiniciá-lo. Então, pode ser adicionado novamente após confirmar que está tudo bem.

    
por 11.04.2012 / 19:24