Soul 网关 2:divide 插件与 Http 代理

divide 插件是进行 http 正向代理的插件,所有 http 类型的请求,都是由该插件进行负载均衡的调用。

配置插件

文档:https://dromara.org/zh/projects/soul/divide-plugin/
据文档描述,在 soul-bootsrap 的 pom.xml 引入如下依赖

1
2
3
4
5
6
7
8
9
10
11
12
<!--if you use http proxy start this-->
<dependency>
<groupId>org.dromara</groupId>
<artifactId>soul-spring-boot-starter-plugin-divide</artifactId>
<version>${last.version}</version>
</dependency>

<dependency>
<groupId>org.dromara</groupId>
<artifactId>soul-spring-boot-starter-plugin-httpclient</artifactId>
<version>${last.version}</version>
</dependency>

然后在 soul-admin 界面开启 divide 插件

运行示例代码

示例代码在下面这个位置

如果运行不了就在项目设置中导入这个模块

看一下配置文件,该服务运行在 localhost:8188

整理一下思路

  • soul-admin 端口 9095
  • soul-bootstrap 端口 9195
  • examples 下的 http 服务端口 8188

用 PostMan 构建一个请求,发往 8188 测试一下


现在将请求发往网关试一下,根据 soul-admin 提示,应该构建如下请求


可见网关成功的转发了我们的请求

负载均衡

测试一下负载均衡
修改一下配置,允许并行

端口改成 8189

在 soul-admin divide 界面点击修改

发现有两个配置,权重都是 50

用 PostMan 发送几次请求,观察日志发现请求均匀的打到了两个地址

过滤

通过 waf 界面可以对流量进行过滤

这个界面的选择器会对流量进行初始匹配,匹配通过后会由选择器规则列表进行最终匹配

在选择器列表和选择器规则列表都添加下面的规则,设置返回状态码 504

使用 PostMan 测试,成功拦截