[雷池WAF]长亭雷池WAF配置基于健康监测的负载均衡,实现故障自动切换上游服务器

为了进一步加强内网安全,在原有硬WAF的基础上,又在内网使用的社区版的雷池WAF,作为应用上层的软WAF。从而实现多WAF防护的架构。

经过进一步了解,发现雷池WAF的上游转发代理是基于Tengine的,所以萌生出了一个想法,就是让雷池既可以具备WAF的功能,又具备负载均衡和故障切换的能力。

接下来,开始正题

 1、首先准备一个用于测试的HTTP Server,注意:这里需要实现一下 /status 这个路由,随便返回啥,只要是 200 的状态码就行。

package mainimport ("os""fmt""net/http"
)func Hello1Handler(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "I am 11111")
}func Hello2Handler(w http.ResponseWriter, r *http.Request) {fmt.Fprintf(w, "I am 22222")
}func check(w http.ResponseWriter, r *http.Request){fmt.Fprintf(w, "check")
}func main () {if len(os.Args) > 1 {http.HandleFunc("/hello", Hello1Handler)http.HandleFunc("/status", check)http.ListenAndServe(":8001", nil)} else {http.HandleFunc("/hello", Hello2Handler)http.HandleFunc("/status", check)http.ListenAndServe(":8002", nil)}
}

然后分别启动两个服务,分别在8001和8002端口。

2、在雷池里创建一个新的站点,并把上游服务器指向第一个节点。

测试访问正常,请求被代理到了8001的HTTP Server上

3、修改雷池Nginx的conf文件

文件路径:/data/safeline/resources/nginx/sites-enabled

下面会有好几个配置文件,命名格式为:IF_backend_* ,每新建一个网站,这里就会新增一个类似命名的文件。

这里找到刚新建的网站的conf文件(cat一下,看看监听端口什么的就能分辨出来)

我这里是IF_backend_2,这个文件。然后开始修改文件内的配置。

  • 添加一个上游server:
  • 配置基于健康检测的的负载均衡。这里仅是一些最基础的配置,你也可以根据自己的需求来修改和添加配置。
  • 校验conf文件,并重启雷池的Nginx。

    docker exec safeline-tengine nginx -t
  • 下面的输出,表示校验通过

    然后重启Nginx

    docker exec safeline-tengine nginx -s reload
  • 5、开始测试结果

  • 负载均衡的测试
  • 因为设置的weight是1,两个节点相等,所以请求在平均分配到两个节点上。

  • 单节点掉线的测试
  • 关闭8002上的HTTP Server

    刷新页面,发现此时请求都集中到了8001的HTTP Server上

    至此打完收工,雷池内置的Tengine(Nginx)本身自带了很多模块,常见的负载均衡应该都是可以配置的。再就自行探索吧!

    PS:这里需要注意的是,当你自己修改完配置文件,又在系统内修改的话,自定义的一些配置会被覆盖了。所以提前自己做好备份。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.hqwc.cn/news/319616.html

如若内容造成侵权/违法违规/事实不符,请联系编程知识网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

实战环境搭建-安装xshell和xftp

安装xshell和xftp的原因是想远程虚拟机,很多时候,直接去操作虚拟机明显不太方便。 所以,我们需要一个能够搭载虚拟机和本地电脑之间的桥梁,哪怕是你们去了企业,也和这个类似,唯一的区别是企业里面更多连接…

希亦、觉飞、小吉三款婴儿洗衣机大比拼!全方位对比测评

由于年龄幼小的婴儿的皮肤都非常的幼嫩,因此婴儿衣物材质的类型大部分都是采用为纯棉,并且婴儿的衣物不能够与大人的衣物一起进行混洗,容易把细菌感染到宝宝的衣物上,因此很多家庭为了保证宝宝衣服的有效清洁,避免交叉…

JMeter分布式压测及常见问题

JMeter分布式压测及常见问题 1. 应用背景2. 目的3. 介绍3.1 分布式压测原理3.2 操作步骤3.2.1 设置配置文件 4. 操作建议5. 常见问题5.1 不能识别地址5.2 不能识别地址 1. 应用背景 在性能测试过程中,并发数过大,如果还想用JMeter这个测试工具&#xff0…

【PTA-C语言】编程练习5 - 函数与指针

如果代码存在问题,麻烦大家指正 ~ ~有帮助麻烦点个赞 ~ ~ 编程练习5 - 函数与指针 6-1 求实数和的函数(分数 10)6-2 求解一元二次方程实根的函数(分数 10)6-3 求集合数据的均方差(分数 10)6-4 计…

从vue小白到高手,从一个内容管理网站开始实战开发第三天,使用Element UI构建页面-登录(一)

上次我们介绍了如何安装Element UI库,这次我们使用Element UI中的组件开始开发我们的页面。 开发之前要先在项目中建立好几个目录,方便我们下面的开发。 一、在项目中创建页面管理目录 1、pages目录(文件夹) 首先在src文件夹下创建一个名为pages的文件夹,该文件夹用来统…

uniCloud 云数据库(新建表、增、删、改、查)

新建表结构描述文件 todo 为自定义的表名 表结构描述文件的默认后缀为 .schema.json 设置表的操作权限 uniCloud-aliyun/database/todo.schema.json 默认的操作权限都是 false "permission": {"read": false,"create": false,"update&quo…

Kotlin采集美团商家信息 同行竞争价格监控

“南方小土豆”挤爆哈尔滨旅游市场,一个冬天让哈尔滨火出了圈,让全国观众看见了不一样的逆向旅游热,虽说我心驰神往,但是无奈加班敲代码,连休息的时间都没有。前段时间我通过用java写了一个美团爬虫程序,今…

Java中的序列化方法探索

.为什么要序列化 对象不序列化,能直接存储吗? 在 Java 中,序列化是将对象的状态信息转换为可以存储或传输的形式(例如,转换为字节流)的过程。在对象数据需要在网络上传输或需要在磁盘上持久化存储时&#…

设计模式之原型模式【创造者模式】

学习的最大理由是想摆脱平庸,早一天就多一份人生的精彩;迟一天就多一天平庸的困扰。各位小伙伴,如果您: 想系统/深入学习某技术知识点… 一个人摸索学习很难坚持,想组团高效学习… 想写博客但无从下手,急需…

2023年.AI域名销售额达550万美元 2024还要继续涨

根据域名投资专家Elliot Silver的最新文章,2023年公开报道的.AI域名销售额已经达到了550万美元,而2022年和2021年分别为90万美元和120万美元。 Silver观察到过去几年.AI域名销售额呈现逐年增长的趋势,尤其是2023年的销售额相较前两年有了显著…

高效的输电线路故障监测系统:实时监测、预防性维护

在电力系统中,输电线路的健康状态直接关系到电网的安全稳定运行。然而,由于线路的广泛分布和长距离特性,故障的检测和定位变得极其困难。为了解决这一问题,恒峰智慧设计了一种全新的高效输电线路故障监测系统,该系统采…

进程和计划任务

一、什么是程序 是一组计算机能识别和执行的指令,运行于电子计算机上,满足人们某种需求的信息化工具 用于描述进程要完成的功能,是控制进程执行的指令集 二、进程 1.什么是进程 进程:正在运行中的程序,加载到内存…