是否可以从文件创建Nginx路由配置?

时间:2019-01-07 07:23:05

标签: nginx nginx-config

我试图四处查看,但找不到任何解决方案。我需要基于我的自定义文件中的数据创建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";
}

是否可以根据我的配置文件的内容动态创建map {}部分?

1 个答案:

答案 0 :(得分:0)

我将如何解决这一任务。

  1. 在您的nginx配置中使用include指令:

    map $http_x_instance_id $pool {
        include /path/to/instances;
    }
    
  2. 安装inotify-tools

  3. 编写一个脚本来监视文件(请参见一些示例here)。在每个文件更改上执行以下操作:

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