我想找到一种解析nginx
配置文件的方法,以便动态生成我将用作文档的图表。
配置文件的nginx
语法是这样的(这个例子是为了简洁起见,我管理的配置文件实际上要复杂得多):
location / {
if (GET) {
echo_exec @memcache;
}
if (POST) {
echo_exec @application;
}
}
location @memcache {
# try to get content from cache
if (notfound) {
# fallback to application
echo_exec @application;
}
}
location @application {
# forwarding request to application
}
我想生成这样的图表(当将鼠标移到进程框上时,您会看到注释,正在调用哪些指令......):
据我所知,nginx
配置文件语法是自定义的。我能够在里面的源代码中找到解析器,src/core/ngx_conf_file.c
它是这样的:
case ';':
case '{':
if (cf->args->nelts == 0) {
ngx_conf_log_error(NGX_LOG_EMERG, cf, 0,
"unexpected \"%c\"", ch);
return NGX_ERROR;
}
if (ch == '{') {
return NGX_CONF_BLOCK_START;
}
return NGX_OK;
不幸的是,我对此一无所知,C
因此不知道如何重用该代码。
您知道nginx
配置文件语法是否接近另一种已知语法,其中解析器已经存在,我可以重新使用和调整以满足我的需要?