json配置文件支持
功能描述
OpenNJet目前支持json格式的配置文件。
配置说明
一条njet.conf指令的标准json格式如下:
{
"cmd": "worker_processes",
"args": [
"auto"
]
}
如果指令包含多个参数,例如add_header Host $host; ,则可以写成:
{
"cmd": "add_header",
"args": [
"Host",
"$host"
]
}
配置NJET配置文件中upstream代码块格式:
upstream backend1 {
zone backend1 10m;
server 127.0.0.1:5900 weight=1;
}
{
"cmd": "upstream",
"args": [
"backend1"
],
"block": [
{
"cmd": "zone",
"args": [
"backend1",
"10m"
]
},
{
"cmd": "server",
"args": [
"127.0.0.1:5900",
"weight=1"
]
}
]
}
配置NJET配置文件中http/stream代码块格式:
http {
dyn_kv_conf conf/iot-work.conf;
include conf/iot-work.conf;
access_log off;
server {
listen 8080;
location / {
root html;
}
}
}
{
"cmd": "http",
"args": [],
"block": [
{
"cmd": "dyn_kv_conf",
"args": [
"conf/iot-work.conf"
]
},
{
"cmd": "include",
"args": [
"mime.types"
]
},
{
"cmd": "access_log",
"args": [
"off"
]
},
{
"cmd": "server",
"args": [],
"block": [
{
"cmd": "listen",
"args": [
"8080"
]
},
{
"cmd": "location",
"args": [
"/"
],
"block": [
{
"cmd": "root",
"args": [
"html"
]
}
]
}
]
}
]
}
配置NJET配置文件中server代码块格式:
server {
listen 443 ssl;
ssl_certificate certs/rsa.server.cer.pem;
ssl_certificate_key certs/rsa.server.key.pem;
location / {
root html;
}
}
{
"cmd": "server",
"args": [],
"block": [
{
"cmd": "listen",
"args": [
"443",
"ssl"
]
},
{
"cmd": "ssl_certificate",
"args": [
"certs/rsa.server.cer.pem"
]
},
{
"cmd": "ssl_certificate_key",
"args": [
"certs/rsa.server.key.pem"
]
}
{
"cmd": "location",
"args": [
"/"
],
"block": [
{
"cmd": "root",
"args": [
"html"
]
}
]
}
]
}
配置NJET配置文件中lua代码块格式:
location / {
content_by_lua_block {
njt.sleep(5)
njt.say ("test ok")
}
}
{
"cmd": "location",
"args": [
"/"
],
"block": [
{
"cmd": "content_by_lua_block",
"args": [],
"block": [
{
"code": "\n\n njt.sleep(5)\n njt.say(\"test ok\")\n "
}
]
}
]
}
NJET标准配置文件示例
{
"parsed": [
{
"cmd": "worker_processes",
"args": [
"2"
]
},
{
"cmd": "cluster_name",
"args": [
"njet"
]
},
{
"cmd": "node_name",
"args": [
"node1"
]
},
{
"cmd": "error_log",
"args": [
"logs/error.log",
"info"
]
},
{
"cmd": "helper",
"args": [
"ctrl",
"modules/njt_helper_ctrl_module.so",
"conf/njet_ctrl.conf"
]
},
{
"cmd": "helper",
"args": [
"broker",
"modules/njt_helper_broker_module.so"
]
},
{
"cmd": "helper",
"args": [
"access_data",
"modules/njt_helper_access_data_module.so",
"conf/goaccess.conf"
]
},
{
"cmd": "load_module",
"args": [
"modules/njt_http_split_clients_2_module.so"
]
},
{
"cmd": "load_module",
"args": [
"modules/njt_agent_dynlog_module.so"
]
},
{
"cmd": "load_module",
"args": [
"modules/njt_http_dyn_bwlist_module.so"
]
},
{
"cmd": "load_module",
"args": [
"modules/njt_dyn_ssl_module.so"
]
},
{
"cmd": "load_module",
"args": [
"modules/njt_http_vtsc_module.so"
]
},
{
"cmd": "load_module",
"args": [
"modules/njt_http_location_module.so"
]
},
{
"cmd": "load_module",
"args": [
"modules/njt_http_access_log_zone_module.so"
]
},
{
"cmd": "events",
"args": [],
"block": [
{
"cmd": "worker_connections",
"args": [
"1024"
]
}
]
},
{
"cmd": "http",
"args": [],
"block": [
{
"cmd": "dyn_kv_conf",
"args": [
"conf/iot-work.conf"
]
},
{
"cmd": "include",
"args": [
"mime.types"
]
},
{
"cmd": "access_log",
"args": [
"off"
]
},
{
"cmd": "vhost_traffic_status_zone",
"args": []
},
{
"cmd": "access_log_write_zone",
"args": [
"on"
]
},
{
"cmd": "access_log_zone",
"args": [
"log_zone",
"100m"
]
},
{
"cmd": "access_log_zone_valid",
"args": [
"3"
]
},
{
"cmd": "server",
"args": [],
"block": [
{
"cmd": "listen",
"args": [
"8080"
]
},
{
"cmd": "location",
"args": [
"/"
],
"block": [
{
"cmd": "root",
"args": [
"html"
]
}
]
}
]
}
]
}
],
"file": "/usr/local/njet/conf/njet.conf"
JSON格式配置文件使用和检查:
配置好json配置文件后,通过-c命令指定该json即可启动。
示例:
/usr/local/njet/sbin/njet -p /usr/local/njet/ -c conf/njet_conf.json -e logs/error.log
验证是否配置成功可以使用-t命令
示例:
/usr/local/njet/sbin/njet -p /usr/local/njet/ -c conf/njet_conf.json -e logs/error.log -t
返回值:
njet: the configuration file /usr/local/njet/conf/njet_conf.json syntax is ok
njet: configuration file /usr/local/njet/conf/njet_conf.json test is successful
如果语法不正确,则会报错:
njet: [emerg] JSON file parse error (line 9, colume 5): ']' expected near '{'
njet: [emerg] unexpected "{" in /usr/local/njet/conf/njet_conf.json:1