使用haproxy golang config-parser 包生成haproxy 配置

以下只是简单使用,具体复杂操作建议好好学习下haproxy的配置文件说明

demo 代码

  • go mod
module demoapp
 
go 1.16
 
require github.com/haproxytech/config-parser/v4 v4.0.0-rc2 // indirect
 
  • main.go
package main
 
import (
    "log"
 
    parser "github.com/haproxytech/config-parser/v4"
    "github.com/haproxytech/config-parser/v4/options"
    "github.com/haproxytech/config-parser/v4/parsers/http/actions"
)
 
const (
    Mydemo = "demoapp"
)
 
func main() {
 
    p, err := parser.New(options.String(""))
    if err != nil {
        log.Printf("some rong %s", err.Error())
    }
    httpRequestActionDeny := &actions.Deny{
        DenyStatus: "0",
        Cond:       "unless",
        CondTest:   "{ src 127.0.0.1 }",
    }
    p.SectionsCreate(parser.Backends, Mydemo)
    err = p.Insert(parser.Backends, Mydemo, "http-request", httpRequestActionDeny)
    if err != nil {
        log.Printf("some demo %s", err.Error())
    }
    err = p.Insert(parser.Backends, Mydemo, "http-request", httpRequestActionDeny, 1)
    if err != nil {
        log.Printf("some demo %s", err.Error())
    }
    result := p.String()
    log.Println(result)
    p.Save("demoapp4.cfg")
 
}
 

效果

 

 

说明

haproxy 的 client native 以及dataplan 都是很值得学习参考的

参考资料

https://github.com/haproxytech/config-parser
https://github.com/haproxytech/client-native
https://github.com/haproxytech/dataplaneapi

posted on   荣锋亮  阅读(207)  评论(0编辑  收藏  举报

编辑推荐:
· 记一次.NET内存居高不下排查解决与启示
· 探究高空视频全景AR技术的实现原理
· 理解Rust引用及其生命周期标识(上)
· 浏览器原生「磁吸」效果!Anchor Positioning 锚点定位神器解析
· 没有源码,如何修改代码逻辑?
阅读排行:
· 全程不用写代码,我用AI程序员写了一个飞机大战
· DeepSeek 开源周回顾「GitHub 热点速览」
· 记一次.NET内存居高不下排查解决与启示
· MongoDB 8.0这个新功能碉堡了,比商业数据库还牛
· .NET10 - 预览版1新功能体验(一)
历史上的今天:
2020-12-11 nginx正则测试工具
2020-12-11 nginx propxy_pass / 学习
2018-12-11 Gource 方便的软件版本可视化录制工具
2018-12-11 tailor multi fragment && cutom-amd script demo 说明
2018-12-11 使用tailor 轻松方便的集成web 框架react&&vue
2017-12-11 apache phoenix 安装试用

导航

< 2025年3月 >
23 24 25 26 27 28 1
2 3 4 5 6 7 8
9 10 11 12 13 14 15
16 17 18 19 20 21 22
23 24 25 26 27 28 29
30 31 1 2 3 4 5
点击右上角即可分享
微信分享提示