拆分客户端#
该模块用于 A/B 测试、金丝雀发布或其他需要将一部分客户端路由到一个服务器或配置,同时将其余部分路由到其他地方的场景。 通过哈希 string 创建一个 $variable;
string 中的变量被替换,
替换结果被哈希,
然后将哈希值映射为 $variable 的字符串值。 哈希函数使用
MurmurHash2
(32 位),
其整个值范围
(0 到 4294967295)
按出现顺序映射到桶中;
百分比决定了桶的大小。
通配符 ( 一个示例: 在这里,插值后的 值 0 到 21474835(0.5% 的样本)产生 值 21474836 到 107374180(2% 的样本)产生 值 107374181 到 4294967295(所有其他值)产生 配置示例#
http {
split_clients "${remote_addr}AAA" $variant {
0.5% .one;
2.0% .two;
* "";
}
server {
location / {
index index${variant}.html;
指令#
split_clients#
*
) 可以出现在最后;
落在其他桶之外的哈希值映射为其指定的值。split_clients "${remote_addr}AAA" $variant {
0.5% .one;
2.0% .two;
* "";
}
$remote_addrAAA
字符串的哈希值分布如下:.one
.two
""
(一个空字符串)