• @webantic/nginxconfigparser nodejs nginx conf 解析以及生成处理包试用


    @webantic/nginx-config-parser 是一个基于nodejs 开发nginx 配置解析工具

    参考使用

    • demo.conf
    upstream mydemoapp {
            # simple round-robin
            server app1:80;
            server app2:80;
            check interval=1000 rise=2 fall=5 timeout=1000 type=http;
            check_http_send "HEAD / HTTP/1.0\r\n\r\n";
            check_http_expect_alive http_2xx http_3xx;
    }
    server {
        listen       80;
        server_name  mydemoapp.com;
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://mydemoapp;
        }
        location /status {
            healthcheck_status;
        }
    }
     
     
    server {
        listen       443 http2;
        server_name  mydemoapp.com;
        ssl app/cer;
        location / {
            root   html;
            index  index.html index.htm;
            proxy_pass http://mydemoapp;
        }
        location /status {
            healthcheck_status;
        }
    }
    • app.js
    var ConfigParser = require('@webantic/nginx-config-parser')
    var parser = new ConfigParser()
     
    // parse straight from file. by default, will try to resolve includes
    var config = parser.readConfigFile('demo.conf')
     
    // to keep deterministic behaviour, set parseIncludes = false in the options
    var configWithoutIncludes = parser.readConfigFile('demo.conf', { parseIncludes: false })
     
    // write direct to file (overwriting existing one)
    // 读取写到其他地方,比如基于json的解析,然后写到一个s3 的挂载中
    parser.writeConfigFile('mynginx.conf', config, true)
    console.log(configWithoutIncludes.server)
     
    // 基于json 的nginx 配置生成
    var sampleConfig = {
        "upstream mydemoapp":{
            "server":[
                "app1:80",
                "app2:80"
            ],
            "check":"interval=1000 rise=2 fall=5 timeout=1000 type=http",
            "check_http_send":"\"HEAD / HTTP/1.0\\\\r\\n\\r\\n\"",
            "check_http_expect_alive":"http_2xx http_3xx"
        },
        "server":[
            {
                "listen":"80",
                "server_name":"mydemoapp.com",
                "location /":{
                    "root":"html",
                    "index":"index.html index.htm",
                    "proxy_pass":"http://mydemoapp"
                },
                "location /status":{
                    "healthcheck_status":""
                }
            },
            {
                "listen":"443 http2",
                "server_name":"mydemoapp.com",
                "ssl":"app/cer",
                "location /":{
                    "root":"html",
                    "index":"index.html index.htm",
                    "proxy_pass":"http://mydemoapp"
                },
                "location /status":{
                    "healthcheck_status":""
                }
            }
        ]
    }
     
    // to multi-line config string
    var configString = parser.toConf(sampleConfig)
    var configString2 = parser.parse(sampleConfig)
    console.log("app:",configString)
    console.log("app2:",configString2)
    // and back again
    var configJson = parser.toJSON(configString)
     
    // shorthand (will change object --> string and string --> object)
    parser.parse(configString)
     
    console.log(JSON.stringify(config))

    说明

    目前关于nginx 解析方便的工具并不是很多(主要是nginx 配置并不是很复杂,我们基于模版引擎也可以解决)
    @webantic/nginx-config-parser 是一个不错的选择,可以解决我们管理nginx 配置的一些问题,而且支持json 以及nginx 配置的模式
    集成到我们的系统中是一个不错的选择

    参考资料

    https://github.com/webantic/nginx-config-parser

  • 相关阅读:
    Silverlight学习(五)图形标绘
    Silverlight学习(四) domainservice动态多条件查询
    MySQL之单表查询
    mysql外键的三种关系
    mysql之完整性约束
    接口类和抽象类的区别
    mysql中的sql_mode
    html5本地存储技术 localstorage
    mysql数值类型
    mysql
  • 原文地址:https://www.cnblogs.com/rongfengliang/p/16123762.html
Copyright © 2020-2023  润新知