Можно ли использовать директиву include в восходящем блоке nginx?

Мой сайт использует два сервера приложений, а именно app1 и app2, поэтому в конфигурации у меня что-то вроде этого:

upstream cluster {
    server app1:8080;
    server app2:8080;
}

Поскольку каждый раз, когда я обновляю код, мне нужно перезапускать оба серверные процессы, и я хочу, чтобы служба не нарушалась, я выполню следующие шаги вручную:

  1. Комментарий app1 в блоке восходящего потока, чтобы изменить его на:

     кластер восходящего потока {
     #server app1: 8080;
     сервер app2: 8080;
    }
    
  2. Выполните nginx -s reload

  3. Обновите код в app1 и перезапустите серверную программу, а затем раскомментируйте app1 в восходящем блоке

  4. Выполните шаги 1- 3 для app2

Я хочу написать сценарий, чтобы избавить от этой утомительной работы, поэтому я надеюсь сделать следующее:

  1. Создайте папку с именем «available», которая содержит app1.conf и app2.conf в форме

     server app1: 8080; 
    
  2. Сделайте еще одну папку с именем «enabled», чтобы содержать программные ссылки app1.conf и app2.conf

  3. Измените восходящий кластер на

     восходящий кластер {
     включить / usr / local / nginx / conf / enabled / *;
    }
    

    Поэтому каждый раз, когда мне нужно отключить какой-либо сервер приложений, я могу просто удалить соответствующую программную ссылку из «включенной» папки, а затем восстановить ее, запустив ln -s

Однако этот подход не помог работает хорошо, так как я получил сообщение об ошибке от nginx:

[emerg]: директива include не разрешена здесь, в ....

Это значит, что include не может быть помещен в блок восходящего потока? и я полагаю, что я не одинок в подобном сценарии, иногда отключаю и включаю сервер, как другие люди обычно с этим справляются?

10
задан jpaugh 26 November 2016 в 20:17
поделиться