NJet 支持使用 json 格式的配置文件了
简介
目前 NJet 的配置文件与 Nginx 的配置文件格式相同。这种配置文件的格式对我们阅读比较友好。但是对一些自动化配置的需求来说,处理起来就很困难。为了以后能够对 NJet 的配置通过自动化工具来进行维护,NJet 增加了对 json 格式配置文件的支持。目前这种支持是很基本的,只是支持主配置文件为 json 格式,里面 include 的文件的格式还是与之前相同。
json 格式
目前 NJet 支持的 json 文件的配置格式如下,参考了开源项目https://github.com/nginxinc/crossplane中的格式,并做了一些修改。
最外层
parsed 的内容是一个数组,数组的每一项都是一个对象,这个对象对应着一条 NJet 命令,或者对应着一个 NJet 的 block。
一条指令
一条指令中包含两个键值,cmd 为一个字条串,对应的指令的名称,args 是一个数组,对应指令中的具体参数。
一个 block 一个 block 中,有三个键值,其中 cmd 和 args 的含义与上面的指令是相同的,增加的 block 键值对应的是一个数组,数组的每一项又对应着一条指令或一个 block。
block 格式中有一些例外,就是 xxx_by_lua_block,这些 block 的格式与上面的通用格式不同,其 block 对应的数组中只有一个 obj, obj 的格式为{“code": “lua_code”}。
实例
下面是一个 server 的配置
对应的 json 配置
使用
NJet 从 3.3 版本开始支持 json 格式的配置文件,json 配置文件的使用与之前 NJet 的启动方式相同,在解析时,NJet 会先检查配置文件是否为 json 格式,并依据文件格式来执行相应的解析操作
后续开发内容
可以支持 json 与 njet 现有配置文件之间的互相 include,或者增加一个指令 include_json。
支持对指定位置配置的查找,更新等。
对现在的动态配置 API 进行适配,能够实时更新全量配置
版权声明: 本文为 InfoQ 作者【通明湖】的原创文章。
原文链接:【http://xie.infoq.cn/article/84be3ba1893a2c243c198080f】。文章转载请联系作者。
评论