node解析修改nginx配置文件操作实例分析
本文实例讲述了node解析修改nginx配置文件操作。分享给大家供大家参考,具体如下:
主要是通过nginx-conf这个工具。
git地址:https://github.com/tmont/nginx-conf
具体用法:
npminstall-Snginx-conf安装工具
varNginxConfFile=require('nginx-conf').NginxConfFile;
//这个api提供了node读写conf文件的功能
NginxConfFile.create('/etc/nginx.conf',function(err,conf){
if(err){
console.log(err);
return;
}
//通过_value的方式读取每一个配置的值
console.log(conf.nginx.user._value);//wwwwww
console.log(conf.nginx.http.server.listen._value);//one.example.com
//模块中有多个子模块,比如server中配置了多个location,通过数组下标的方式访问
console.log(conf.nginx.http.server.location[3].root._value);///spool/www
//修改配置
//createapi是同步修改文件的,对于配置的修改和删除会同步反映到磁盘中
conf.on('flushed',function(){
console.log('finishedwritingtodisk');
});
//listentotheflushedeventtodeterminewhenthenewfilehasbeenflushedtodisk
conf.nginx.events.connections._value=1000;
//这个api的用途是当配置改变时不写到磁盘中
conf.die('/etc/nginx.conf');
conf.nginx.events.connections._value=2000;//changeremainslocal,notin/etc/nginx.conf
//将内存中的配置写到另一个文件中
conf.live('/etc/nginx.conf.bak');
//强行将内存中的配置刷到磁盘中
conf.flush();
//增加和移除指令通过_add和_remove
conf.nginx.http._add('add_header','Cache-Controlmax-age=315360000,public');
console.log(conf.nginx.http.add_header._value);//Cache-Controlmax-age=315360000,public
conf.nginx.http._add('add_header','X-Load-Balancerlb-01');
conf.nginx.http._add('add_header','X-Securetrue');
console.log(conf.nginx.http.add_header[0]._value);//Cache-Controlmax-age=315360000,public
console.log(conf.nginx.http.add_header[1]._value);//X-Load-Balancerlb-01
console.log(conf.nginx.http.add_header[2]._value);//X-Securetrue
conf.nginx.http._remove('add_header');//removesadd_header[0]
conf.nginx.http._remove('add_header',1);//removesadd_header[1]
//如果只有一个带有名称的指令,会被被展开成一个属性,通过数组下表访问的将是undefined
console.log(conf.nginx.http.add_header._value);//X-Load-Balancerlb-01
console.log(conf.nginx.http.add_header[0]);//undefined
//增加一个新的模块
conf.nginx.http._add('server');
conf.nginx.http.server._add('listen','80');
//that'llcreatesomethinglikethis:
/*
server{
listen80;
}
*/
//存在多个模块是通过数组方式访问
conf.nginx.http._add('server');
conf.nginx.http.server[1]._add('listen','443');
/*
server{
listen80;
}
server{
listen443;
}
*/
//blockswithvalues:
conf.nginx.http.server[1]._add('location','/');
conf.nginx.http.server[1].location._add('root','/var/www/example.com');
/*
server{
location/{
root/var/www/example.com;
}
}
*/
//luablocksalsowork,butyoucan'tputamismatched"{"or"}"inacomment!
conf.nginx.http.location._addVerbatimBlock('rewrite_by_lua_block','{\n\
ngx.say("thisisaluablock!")\n\
res=ngx.location.capture("/memc",\n\
{args={cmd="incr",key=ngx.var.uri}}\n\
)\n\
}');
});
此工具同样支持对注释的修改
//读取use配置上的注释,以数组的方式返回
console.log(conf.nginx.events.use._comments.length);//1
console.log(conf.nginx.events.use._comments[0]);//use[kqueue|rtsig|epoll|/dev/poll|select|poll];
//删除注释
conf.nginx.events.use._comments.splice(0,1);
//添加注释
conf.nginx.event.use._comments.push('mynewcomment');
console.log(conf.nginx.events.use._comments.length);//1
console.log(conf.nginx.events.use._comments[0]);//mynewcomment
//修改注释
conf.nginx.event.use._comments[0]='updated';
console.log(conf.nginx.events.use._comments[0]);//updated
注意特殊情况
foo#comment bar; console.log(conf.nginx.foo._value);//bar console.log(conf.nginx.foo._comments[0]);//comment Butifthecommentcomesafter: foobar; #comment console.log(conf.nginx.foo._value);//bar console.log(conf.nginx.foo._comments.length);//0
希望本文所述对大家node.js程序设计有所帮助。
声明:本文内容来源于网络,版权归原作者所有,内容由互联网用户自发贡献自行上传,本网站不拥有所有权,未作人工编辑处理,也不承担相关法律责任。如果您发现有涉嫌版权的内容,欢迎发送邮件至:czq8825#qq.com(发邮件时,请将#更换为@)进行举报,并提供相关证据,一经查实,本站将立刻删除涉嫌侵权内容。