Я использую nginx в качестве обратного прокси. Всякий раз, когда я обновляю конфиг для него, используя
sudo "cp -r #{nginx_config_path}* /etc/nginx/sites-enabled/"
sudo "kill -s HUP `cat /var/run/nginx.pid`"
Я сталкиваюсь с коротким временем простоя. Как я могу избежать этого?
sites-enabled
, а не копировать ее. Не связано с вашей конкретной проблемой, но вы можете рассмотреть это.kill HUP
это способ сделать изящную перезагрузку в Nginx.Ответы:
Запустить
service nginx reload
или/etc/init.d/nginx reload
Это сделает горячую перезагрузку конфигурации без простоя. Если у вас есть ожидающие запросы, будут существовать длительные процессы nginx, которые будут обрабатывать эти соединения до того, как они умирают, так что это очень изящный способ перезагрузить конфиги.
Иногда вы можете захотеть начать с
sudo
источник
SIGHUP
в основной процесс nginx. Там не должно быть разницы. nginx.org/en/docs/control.htmlcat $PIDFILE
|| echo -n "не могу перезагрузить"service nginx reload
иnginx -s reload
? Если я запускаю первый, я получаю этот вывод:,Reloading nginx configuration: nginx.
но мои изменения не обновляются. Если я запускаю последний, я не получаю вывод, но мои изменения отражаются.log_not_found
директивы, но обнаружил, что мне нужно сделать перезагрузку, чтобы она заработала. Я думаю, перезагрузка не работает для всех директив?Бегать
/usr/sbin/nginx -s reload
Смотрите http://wiki.nginx.org/CommandLine для получения дополнительных параметров командной строки.
источник
Нет, вы не правы, вы не должны сталкиваться с каким-либо простоем из-за описанной вами процедуры. (Nginx может не только перезагрузить конфигурацию на лету без каких-либо простоев, но даже обновить исполняемый файл на лету, без каких-либо простоев.)
Согласно http://nginx.org/docs/control.html#reconfiguration , отправка
HUP
сигнала в nginx гарантирует, что он выполнит корректный перезапуск, и, если файлы конфигурации неверны, вся процедура будет прекращена, и вы ' оставьте nginx как перед отправкойHUP
сигнала. Ни в коем случае не должно быть простоев.источник
Обычно перезагрузка файла конфигурации службы не должна влиять на работающую службу. Однако это зависит от того, как
SIGHUP
обрабатывается сигнал.Если конкретная служба испытывает простои во время перезагрузки, это можно обойти, запустив одну и ту же службу на нескольких серверах, предпочтительно с использованием балансировщика нагрузки. В этом случае вы можете вынуть один сервер за раз и перезагрузить / перезапустить его. Затем он может быть повторно добавлен после подтверждения, что все в порядке.
источник