go-nginx-conf-parser

module
v0.0.3 Latest Latest
Warning

This package is not in the latest version of its module.

Go to latest
Published: Jun 19, 2020 License: MIT

README

项目介绍

go-nginx-conf-parser 是基于golang语言开发的项目,它目前还处于测试阶段,目前已提供Nginx配置文件管理后端工具“bifrost”,用于对Nginx配置文件解析并提供配置文件展示和修改的接口,支持json、字符串格式与golang结构相互转换。该项目持续更新中。最新可用版本为v0.0.3

项目特点

支持将配置文件、json数据、字符串与配置结构体相互转换

配置结构体支持增加、删除、查询(暂实现查询server上下文结构体)

实现了在加载配置或返序列化json时,防止循环读取配置的功能;实现了nginx配置文件后台更新后,自动热加载的功能

提供配置文件展示和修改及配置信息统计查询的接口

使用方法

下载地址

bifrost-v0.0.3

Windows: bifrost.v0_0_3.win_x64

Linux: bifrost.v0_0_3.linux_x64

应用配置

配置路径

configs/bifrost.yml

配置示例

WebServerInfo:
  listenPort: 12321
  servers:
    -
      name: "bifrost-test"
      serverType: nginx
      baseURI: "/ng_conf1"
      confPath: "/usr/local/openresty/nginx/conf/nginx.conf"
      verifyExecPath: "/usr/local/openresty/nginx/sbin/nginx"
    -
      name: "bifrost-test2"
      serverType: nginx
      baseURI: "/ng_conf2"
      confPath: "/GO_Project/src/go-nginx-conf-parser/test/config_test/nginx.conf"
      verifyExecPath: "xxxxxxxxxxxx/nginx"
DBConfig:
  DBName: "bifrost"
  host: "127.0.0.1"
  port: 3306
  protocol: "tcp"
  user: "heimdall"
  password: "Bultgang"
logConfig:
  logDir: "./logs"
  level: 2

命令帮助

> ./bifrost -h
  bifrost version: v0.0.3
  Usage: ./bifrost [-hv] [-f filename] [-s signal]
  
  Options:
    -f config
      	the bifrost configuration file path. (default "./configs/bifrost.yml")
    -h help
      	this help
    -s signal
      	send signal to a master process: stop, restart, status
    -v version
      	this version 

应用接口调用方式

访问认证接口
1.登录认证接口

接口地址

http://<Host>:<Port>/login?username=<username>&password=<password>&unexpired=<true|false>

返回格式

json

请求方式

http get

请求示例

http://127.0.0.1:12321/login?username=heimdall&password=Bultgang

请求参数

名称 必填 类型 说明
username string 用户名
password string 用户密码
unexpired bool token是否永不过期,默认为false

返回参数说明

名称 类型 说明
json返回示例 - -

json返回示例

{
  "message": "null",
  "status": "success",
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTE2MDcwMzcsImlhdCI6MTU5MTYwMzQzNywidXNlcl9pZCI6MSwicGFzc3dvcmQiOiJuZ2FkbWluIiwidXNlcm5hbWUiOiJuZ2FkbWluIiwiZnVsbF9uYW1lIjoibmdhZG1pbiIsInBlcm1pc3Npb25zIjpbXX0.l5qE1sMBD9VJHspzXlhHNmHhbZiF00YlCafUIsIEJpo"
}
2.校验会话token接口

接口地址

http://<Host>:<Port>/verify?token=<token>

返回格式

json

请求方式

http get

请求示例

http://127.0.0.1:12321/verify?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTE2MDcwMzcsImlhdCI6MTU5MTYwMzQzNywidXNlcl9pZCI6MSwicGFzc3dvcmQiOiJuZ2FkbWluIiwidXNlcm5hbWUiOiJuZ2FkbWluIiwiZnVsbF9uYW1lIjoibmdhZG1pbiIsInBlcm1pc3Npb25zIjpbXX0.l5qE1sMBD9VJHspzXlhHNmHhbZiF00YlCafUIsIEJpo

请求参数

名称 必填 类型 说明
token string 用户访问认证成功后返回的令牌

返回参数说明

名称 类型 说明
json返回示例 - -

json返回示例

{
  "message": "Certified user 'heimdall'",
  "status": "success"
}
3.更新会话token接口

接口地址

http://<Host>:<Port>/refresh?token=<token>

返回格式

json

请求方式

http get

请求示例

http://127.0.0.1:12321/refresh?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTE2MDcwMzcsImlhdCI6MTU5MTYwMzQzNywidXNlcl9pZCI6MSwicGFzc3dvcmQiOiJuZ2FkbWluIiwidXNlcm5hbWUiOiJuZ2FkbWluIiwiZnVsbF9uYW1lIjoibmdhZG1pbiIsInBlcm1pc3Npb25zIjpbXX0.l5qE1sMBD9VJHspzXlhHNmHhbZiF00YlCafUIsIEJpo

请求参数

名称 必填 类型 说明
token string 用户访问认证成功后返回的令牌

返回参数说明

名称 类型 说明
json返回示例 - -

json返回示例

{
  "message": "null",
  "status": "success",
  "token": "eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTE2MDc3MDEsImlhdCI6MTU5MTYwMzQzNywidXNlcl9pZCI6MSwicGFzc3dvcmQiOiJuZ2FkbWluIiwidXNlcm5hbWUiOiJuZ2FkbWluIiwiZnVsbF9uYW1lIjoibmdhZG1pbiIsInBlcm1pc3Npb25zIjpbXX0.fDoe4v37XyjmrK4wnfhOUnePwJLdszYXveOfoRXyUj8"
}
Nginx配置信息统计查询接口

接口地址

http://<Host>:<Port>/<baseURI>/statistics?<statisticsParam>=<true|false>&token=<token>

注:<baseURI>为ng管理工具配置中WebServerInfo.servers列表各自元素的baseURI子参数值。<statisticsParam>为统计查询过滤参数,详见请求参数

返回格式

json

请求方式

http get

请求示例

http://127.0.0.1:12321/ng_conf1/statistics?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTE2MDc3MDEsImlhdCI6MTU5MTYwMzQzNywidXNlcl9pZCI6MSwicGFzc3dvcmQiOiJuZ2FkbWluIiwidXNlcm5hbWUiOiJuZ2FkbWluIiwiZnVsbF9uYW1lIjoibmdhZG1pbiIsInBlcm1pc3Npb25zIjpbXX0.fDoe4v37XyjmrK4wnfhOUnePwJLdszYXveOfoRXyUj8&type=json

请求参数

名称 必填 类型 说明
token string 用户访问认证成功后返回的令牌
NoHttpSvrsNum bool 统计查询过滤参数,默认为“false”。当为“true”时,不查询HTTPServers统计数
NoHttpSvrNames bool 统计查询过滤参数,默认为“false”。当为“true”时,不查询HTTPServerNames信息列表
NoHttpPorts bool 统计查询过滤参数,默认为“false”。当为“true”时,不查询HTTPServers端口侦听信息列表
NoLocsNum bool 统计查询过滤参数,默认为“false”。当为“true”时,不查询Locations统计数
NoStreamSvrsNum bool 统计查询过滤参数,默认为“false”。当为“true”时,不查询StreamServers统计数
NoStreamPorts bool 统计查询过滤参数,默认为“false”。当为“true”时,不查询StreamServers端口侦听信息列表

注:统计查询过滤参数不可都填为true,否则将返回HTTP 400。

返回参数说明

名称 类型 说明
json返回示例 - -

json返回示例

{
  "message": {
    "httpPorts": [80],
    "httpSvrNames": ["localhost"],
    "httpSvrsNum": 1,
    "locNum": 2,
    "streamPorts": null,
    "streamSvrsNum": 0
  },
  "status": "success"
}
Nginx配置接口
1.查询nginx配置接口

接口地址

http://<Host>:<Port>/<baseURI>?token=<token>&type=<type>

注:<baseURI>为ng管理工具配置中WebServerInfo.servers列表各自元素的baseURI子参数值。

返回格式

json

请求方式

http get

请求示例

http://127.0.0.1:12321/ng_conf1?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTE2MDc3MDEsImlhdCI6MTU5MTYwMzQzNywidXNlcl9pZCI6MSwicGFzc3dvcmQiOiJuZ2FkbWluIiwidXNlcm5hbWUiOiJuZ2FkbWluIiwiZnVsbF9uYW1lIjoibmdhZG1pbiIsInBlcm1pc3Npb25zIjpbXX0.fDoe4v37XyjmrK4wnfhOUnePwJLdszYXveOfoRXyUj8&type=json

请求参数

名称 必填 类型 说明
type string 默认为字符串格式,指定“string”为字符串格式;“json”为json格式
token string 用户访问认证成功后返回的令牌

返回参数说明

名称 类型 说明
json返回示例 - -

json返回示例

string格式数据返回示例

{
  "message": "# user  nobody;\nworker_processes 1;\n# error_log  logs/error.log;\n",
  "status": "success"
}

json格式数据返回示例

{
  "message": {
    "config": {
      "value": "/usr/local/openresty/nginx/conf/nginx.conf",
      "param": [{
        "comments": "user  nobody;",
        "inline": true
      }, {
        "name": "worker_processes",
        "value": "1"
      }, {
        "comments": "error_log  logs/error.log;",
        "inline": false
      }]
    }
  },
  "status": "success"
}
2.更新nginx配置接口

接口地址

http://<Host>:<Port>/<baseURI>?token=<token>

注:<baseURI>为ng管理工具配置中WebServerInfo.servers列表各自元素的baseURI子参数值。

返回格式

json

请求方式

http post

请求示例

curl 'http://127.0.0.1:12321/ng_conf1?token=eyJhbGciOiJIUzI1NiIsInR5cCI6IkpXVCJ9.eyJleHAiOjE1OTE2MDc3MDEsImlhdCI6MTU5MTYwMzQzNywidXNlcl9pZCI6MSwicGFzc3dvcmQiOiJuZ2FkbWluIiwidXNlcm5hbWUiOiJuZ2FkbWluIiwiZnVsbF9uYW1lIjoibmdhZG1pbiIsInBlcm1pc3Npb25zIjpbXX0.fDoe4v37XyjmrK4wnfhOUnePwJLdszYXveOfoRXyUj8'\
    -X POST\
    -F "data=@/tmp/ng_conf.json"

请求参数

名称 必填 类型 说明
token string 用户访问认证成功后返回的令牌

请求表单参数

名称 必填 类型 说明
data file 配置文件数据json文件

返回参数说明

名称 类型 说明
json返回示例 - -

json返回示例

{
  "message":"Nginx conf updated.",
  "status":"success"
}

Directories

Path Synopsis
cmd
internal
pkg
json
json 包,该包包含了用于resolve包中nginx配置对象json反序列化的相关对象和方法及函数 创建者: ClessLi 创建时间: 2020-4-13 09:37:01
json 包,该包包含了用于resolve包中nginx配置对象json反序列化的相关对象和方法及函数 创建者: ClessLi 创建时间: 2020-4-13 09:37:01
resolv
resove 包,该包包含了项目最基础的上下文相关对象,及相关方法及函数 创建者: ClessLi 创建时间:2020-1-17 11:14:15
resove 包,该包包含了项目最基础的上下文相关对象,及相关方法及函数 创建者: ClessLi 创建时间:2020-1-17 11:14:15

Jump to

Keyboard shortcuts

? : This menu
/ : Search site
f or F : Jump to
y or Y : Canonical URL