node解析修改nginx配置文件操作实例分析
网络编程 2021-07-04 15:02www.168986.cn编程入门
这篇文章主要介绍了node解析修改nginx配置文件操作,结合实例形式分析了node.js使用nginx-conf解析修改nginx配置文件的相关操作技巧,需要的朋友可以参考下
本文实例讲述了node解析修改nginx配置文件操作。分享给大家供大家参考,具体如下
主要是通过nginx-conf这个工具。
git地址
具体用法
npm install -S nginx-conf 安装工具
var NginxConfFile = 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); // console.log(conf.nginx.http.server.listen._value); //one.example. //模块中有多个子模块,比如server中配置了多个location,通过数组下标的方式访问 console.log(conf.nginx.http.server.location[3].root._value); // /spool/ //修改配置 //create api是同步修改文件的,对于配置的修改和删除会同步反映到磁盘中 conf.on('flushed', function() { console.log('finished writing to disk'); }); //listen to the flushed event to determine when the new file has been flushed to disk conf.nginx.events.connections._value = 1000; // 这个api的用途是当配置改变时不写到磁盘中 conf.die('/etc/nginx.conf'); conf.nginx.events.connections._value = 2000; //change remains local, not in /etc/nginx.conf // 将内存中的配置写到另一个文件中 conf.live('/etc/nginx.conf.bak'); // 强行将内存中的配置刷到磁盘中 conf.flush(); // 增加和移除指令 通过 _add 和 _remove conf.nginx.http._add('add_header', 'Cache-Control max-age=315360000, public'); console.log(conf.nginx.http.add_header._value); //Cache-Control max-age=315360000, public conf.nginx.http._add('add_header', 'X-Load-Balancer lb-01'); conf.nginx.http._add('add_header', 'X-Secure true'); console.log(conf.nginx.http.add_header[0]._value); //Cache-Control max-age=315360000, public console.log(conf.nginx.http.add_header[1]._value); //X-Load-Balancer lb-01 console.log(conf.nginx.http.add_header[2]._value); //X-Secure true conf.nginx.http._remove('add_header'); //removes add_header[0] conf.nginx.http._remove('add_header', 1); //removes add_header[1] //如果只有一个带有名称的指令,会被被展开成一个属性,通过数组下表访问的将是undefined console.log(conf.nginx.http.add_header._value); //X-Load-Balancer lb-01 console.log(conf.nginx.http.add_header[0]); //undefined // 增加一个新的模块 conf.nginx.http._add('server'); conf.nginx.http.server._add('listen', '80'); //that'll create something like this: / server { listen 80; } / // 存在多个模块是通过数组方式访问 conf.nginx.http._add('server'); conf.nginx.http.server[1]._add('listen', '443'); / server { listen 80; } server { listen 443; } / // blocks with values: conf.nginx.http.server[1]._add('location', '/'); conf.nginx.http.server[1].location._add('root', '/var//example.'); / server { location / { root /var//example.; } } / // lua blocks also work, but you can't put a mismatched "{" or "}" in a ment! conf.nginx.http.location._addVerbatimBlock('rewrite_by_lua_block', '{\n\ ngx.say("this is a lua block!")\n\ res = ngx.location.capture("/memc",\n\ { args = { cmd = "incr", key = ngx.var.uri } }\n\ )\n\ }'); });
此工具同样支持对注释的修改
// 读取use配置上的注释,以数组的方式返回 console.log(conf.nginx.events.use._ments.length); // 1 console.log(conf.nginx.events.use._ments[0]); // use [ kqueue | rtsig | epoll | /dev/poll | select | poll ]; // 删除注释 conf.nginx.events.use._ments.splice(0, 1); // 添加注释 conf.nginx.event.use._ments.push('my new ment'); console.log(conf.nginx.events.use._ments.length); // 1 console.log(conf.nginx.events.use._ments[0]); //my new ment // 修改注释 conf.nginx.event.use._ments[0] = 'updated'; console.log(conf.nginx.events.use._ments[0]); //updated
注意特殊情况
foo #ment bar; console.log(conf.nginx.foo._value); //bar console.log(conf.nginx.foo._ments[0]); //ment But if the ment es after: foo bar; #ment console.log(conf.nginx.foo._value); //bar console.log(conf.nginx.foo._ments.length); //0
希望本文所述对大家node.js程序设计有所帮助。
编程语言
- 如何快速学会编程 如何快速学会ug编程
- 免费学编程的app 推荐12个免费学编程的好网站
- 电脑怎么编程:电脑怎么编程网咯游戏菜单图标
- 如何写代码新手教学 如何写代码新手教学手机
- 基础编程入门教程视频 基础编程入门教程视频华
- 编程演示:编程演示浦丰投针过程
- 乐高编程加盟 乐高积木编程加盟
- 跟我学plc编程 plc编程自学入门视频教程
- ug编程成航林总 ug编程实战视频
- 孩子学编程的好处和坏处
- 初学者学编程该从哪里开始 新手学编程从哪里入
- 慢走丝编程 慢走丝编程难学吗
- 国内十强少儿编程机构 中国少儿编程机构十强有
- 成人计算机速成培训班 成人计算机速成培训班办
- 孩子学编程网上课程哪家好 儿童学编程比较好的
- 代码编程教学入门软件 代码编程教程