Конфигурация Nginx без перезарядки

Я использую nginx в качестве обратного прокси. Всякий раз, когда я обновляю конфигурацию для нее, используя

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

Мне грозит кратковременное простоя. Как я могу избежать этого?

90 голосов | спросил Saurav Shah 11 PMpWed, 11 Apr 2012 21:13:40 +040013Wednesday 2012, 21:13:40

4 ответа


144

Запустите service nginx reload или /etc/init.d/nginx reload

Он будет выполнять горячую перезагрузку конфигурации без простоя. Если у вас есть ожидающие запросы, тогда будут сохраняться процессы nginx, которые будут обрабатывать эти соединения до того, как они умрут, поэтому это чрезвычайно грациозный способ перезагрузки конфигураций.

Иногда вам может потребоваться добавить с помощью sudo

ответил Hengjie 11 PMpWed, 11 Apr 2012 21:24:05 +040024Wednesday 2012, 21:24:05
49

Запустите /usr/sbin/nginx -s reload

Подробнее о параметрах командной строки см. http://wiki.nginx.org/CommandLine .

ответил Shiv Kumar Sah 27 J000000Monday15 2015, 16:46:54
7

Нет, вы ошибаетесь, вы не должны сталкиваться с каким-либо простоя с описанной вами процедурой. (Nginx может выполнять не только перезагрузку конфигурации «на лету» без каких-либо простоев, но даже обновление исполняемого файла «на лету», но без простоя.)

По http://nginx.org/docs/control.html#reconfiguration, посылая сигнал HUP в nginx, убедитесь, что он выполняет изящный перезапуск, и, если файлы конфигурации неверны, вся процедура заброшена, и вы остаетесь с nginx по-прежнему, отправляя сигнал HUP. Ни при каких обстоятельствах не должно быть возможности простоя.

  

Чтобы nginx перечитывал файл конфигурации, в главный процесс должен быть отправлен сигнал HUP. Мастер-процесс сначала проверяет достоверность синтаксиса, затем пытается применить новую конфигурацию, то есть открыть файлы журналов и новые сокеты для прослушивания. Если это не удается, оно отменяет изменения и продолжает работать со старой конфигурацией.

ответил cnst 22 J0000006Europe/Moscow 2015, 19:58:38
2

Обычно перезагрузка конфигурационного файла службы не должна влиять на текущую службу. Однако это зависит от того, как обрабатывается сигнал SIGHUP.

Если конкретная служба испытывает простоя во время перезагрузки, это можно обойти, запустив ту же службу на нескольких серверах, предпочтительно используя балансировщик нагрузки. В этом случае вы можете выгружать один сервер за раз и перезагружать /перезапускать его. Затем он может быть добавлен после подтверждения, что это нормально.

ответил Khaled 11 PMpWed, 11 Apr 2012 21:24:10 +040024Wednesday 2012, 21:24:10

Похожие вопросы

Популярные теги

security × 330linux × 316macos × 2827 × 268performance × 244command-line × 241sql-server × 235joomla-3.x × 222java × 189c++ × 186windows × 180cisco × 168bash × 158c# × 142gmail × 139arduino-uno × 139javascript × 134ssh × 133seo × 132mysql × 132