流量管理
2024/3/11...大约 1 分钟
流量管理
NGINX 和 NGINX Plus 也被归类于 Web 流量控制器。您可以使用 NGINX 智能地路由流量,并根据多个属性控制流量。本章介绍了 NGINX 的多项功能,包括:按比例分割客户端请求;利用客户端的地理位置;通过速率、连接和带宽限制控制流量。阅读时请注意,您可以混合搭配这些功能来解锁更多可能。
A/B 测试
问题
在文件或应用的两个或多个版本之间分割客户端流量,以测试接受度或参与度。
解决方案
使用 split_clients 模块将一定比例的客户端流量定向到一个不同的上游(upstream)池:
split_clients "${remote_addr}AAA" $variant {
20.0% "backendv2";
* "backendv1";
}
split_clients 指令对作为第一个参数提供的字符串进行哈希处理,并用该哈希值除以提供的百分比,以映射作为第二个参数提供的变量的值。在第一个参数中添加“AAA”是为了证明这是一个可以包含多个变量的串联字符串,如通用哈希负载均衡算法中所述。第三个参数是一个包含键值(key-value)对的对象,其中键是百分比权重,值是要分配的值。键可以是百分比或星号。星号表示取完所有百分比后的剩余部分。对于 $variant 变量的值,backendv2 为客户端 IP 地址流量的 20%,backendv1 为其余80%。
在此示例中,backendv1 和 backendv2 表示上游服务器池,可以与 proxy_pass 指令一起使用,如下所示:
location / {
proxy_pass http://$variant
}