node解析修改ngix配置文件
主要是通过nginx-conf这个工具。
git地址:https://github.com/tmont/nginx-conf
具体用法:
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); //www www
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
//修改配置
//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/www/example.com');
/*
server {
location / {
root /var/www/example.com;
}
}
*/
// lua blocks also work, but you can't put a mismatched "{" or "}" in a comment!
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._comments.length); //
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('my new comment');
console.log(conf.nginx.events.use._comments.length); //
console.log(conf.nginx.events.use._comments[0]); //my new comment // 修改注释
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
But if the comment comes after: foo bar;
#comment
console.log(conf.nginx.foo._value); //bar
console.log(conf.nginx.foo._comments.length); //
node解析修改ngix配置文件的更多相关文章
- Golang读取并修改非主流配置文件
今天工作中碰到的问题,要求修改此配置文件,没看出来是什么格式,用了下面的思路: mysql { # If any of the files below are set, TLS encryption ...
- 并发之AQS原理(二) CLH队列与Node解析
并发之AQS原理(二) CLH队列与Node解析 1.CLH队列与Node节点 就像通常医院看病排队一样,医生一次能看的病人数量有限,那么超出医生看病速度之外的病人就要排队. 一条队列是队列中每一个人 ...
- asp.net中为什么修改了配置文件后我们不需要重启IIS
本文转载:http://blog.itpub.net/12639172/viewspace-659819/ 大家知道,asp.net中,如果我们修改了配置文件只要把它保存之后,就会立刻反应到程序中, ...
- Spark添加/更改集群节点需要修改的配置文件
笔记:在配置好了spark后,如果需要添加/删除一个结点需要修改如下配置文件 cd $HADOOP/etc/hadoop 进入hadoop配置文件夹下 修改 slaves,将对应的节点添加/删除 修改 ...
- sublime text3修改默认配置文件是失败的解决方法
如果你修改sublime text3的默认配置文件Preferences.sublime-settings失败,现实的错误信息如下图: 其实根据提示信息就好找问题出在哪里了:权限 要想成功的修改默认配 ...
- Linux中使用sed命令或awk命令修改常规配置文件
一.方案: Linux中使用sed命令或awk命令修改常规配置文件 二.步骤: 1.假设有一个a.txt,内容如下: #!/bin/bash aa= bbb= ccc= #ddd= 2.如果想要把里面 ...
- AWS中国EC2 公网IP登录免pemKEY修改shh 配置文件
个人使用记录 1:KEY 授权 chmod 400 VPN.pem 2:连接 ssh -i "VPN.pem" ubuntu@ec2-54-183-119-93.us-west-1 ...
- docker下修改mysql配置文件
原文:docker下修改mysql配置文件 版权声明:本文为博主原创文章,转载注明地址:http://blog.csdn.net/wang704987562 https://blog.csdn.net ...
- 修改gitlab配置文件指定服务器ip和自定义端口:
修改gitlab配置文件指定服务器ip和自定义端口: vim /etc/gitlab/gitlab.rb gitlab-ctl reconfiguregitlab-ctl restart 查看与rpm ...
随机推荐
- Spring怎么管理事务?
我们一般通过aop管理事务,就是把代码看成一个纵向有序的,然后通过aop管理事务,就好比增删改的时候需要开启一个事务,我们给他配置一个required,required就是有事务就执行事务,没有就给他 ...
- JavaWeb第一天--HTML
HTML HTML简介 HTML(Hyper TextMarkupLanguage) 超文本标记语言. 超文本: 超越了文本仅仅展示信息的功能范畴,泛指:图片.有样式的文字.超链接. 标记: 标签. ...
- 如何检测Windows中的横向渗透攻击
一.前言 横向渗透攻击技术是复杂网络攻击中广泛使用的一种技术,特别是在高级持续威胁(Advanced Persistent Threats,APT)中更加热衷于使用这种攻击方法.攻击者可以利用这些技术 ...
- 原油PETROLAEUM英语PETROLAEUM石油
petrolaeum (uncountable) Archaic spelling of petroleum petroleum See also: Petroleum Contents [hide] ...
- JS 正则表达式转换字符串
获取第一个.前面的字符串,以及后面的字符串: const transform = str => { str.replace(/([^\.]*)\.(.*)/, function($0, $1,$ ...
- Ansible入门笔记(2)之常用模块
目录 Ansible常用模块 1.1.Ansible Ad-hoc 1.2.Ansible的基础命令 1.3.常用模块 Ansible常用模块 1.1.Ansible Ad-hoc 什么事ad-hoc ...
- linux设备驱动程序-i2c(2)-adapter和设备树的解析
linux设备驱动程序-i2c(2)-adapter和设备树的解析 (注: 基于beagle bone green开发板,linux4.14内核版本) 在本系列linux内核i2c框架的前两篇,分别讲 ...
- nginx与php分离搭建
nginx与php分离搭建 nginx配置 server { listen 80; 定义端口 server_name www.a.org; 定义域名 location / ...
- X509Certificate 类
地址:https://docs.microsoft.com/zh-cn/dotnet/api/system.security.cryptography.x509certificates.x509cer ...
- wordpress获取当前页面链接
我们知道wordpress的<?php the_permalink(); ?>和<?php echo get_permalink(); ?>可以获取页面链接,但是有些比较复杂的 ...