Можно ли создать конфигурацию маршрутизации Nginx из файла? - PullRequest
0 голосов
/ 07 января 2019

Я пытался искать везде, но я не смог найти никакого решения. Мне нужно создать конфигурацию маршрутизации Nginx на основе данных в моем пользовательском файле. Файл будет обновлен автоматически и будет выглядеть следующим образом.

api_key_1: instance_id_1
api_key_2: instance_id_2

И в nginx.conf я ожидаю что-то подобное

upstream instance_id_1 {
     server 127.0.0.1:8080;
}

upstream instance_id_2 {
     server 127.0.0.1:8081;
}

map $http_x_instance_id $pool {
     api_key_1 "instance_id_1";
     api_key_2 "instance_id_2";
}

Можно ли динамически создавать часть карты {} в соответствии с содержимым моего конфигурационного файла?

1 Ответ

0 голосов
/ 09 января 2019

Как бы я решил эту задачу.

  1. Используйте директиву include в конфигурации nginx:

    map $http_x_instance_id $pool {
        include /path/to/instances;
    }
    
  2. Установка inotify-tools .

  3. Напишите скрипт для просмотра вашего файла (см. Некоторые примеры здесь ). При каждом изменении файла выполните что-то вроде этого:

    sed -n 's/\(.*\):[[:blank:]]*\(.*\)/\1 "\2";/p' /path/to/your/custom/file >/path/to/instances
    nginx -reload
    
...