split_clients
`split_clients` 指令允许 NGINX 根据指定的百分比将客户端划分为不同的组,并对每个组执行不同的操作。 — NGINX HTTP Core
split_clients
http
语法split_clients $remote_addr % { weight1 block1; weight2 block2; ... };
默认值none
上下文http
模块NGINX HTTP Core
参数block (2)
说明
`split_clients` 指令可以在 `http` 上下文中使用,以便在多个后端或配置之间实现 A/B 测试和流量分配。基本上,它会根据客户端的哈希值(通常是客户端的 IP 地址)将请求分配到若干已定义的配置块之一。 当定义该指令时,它接受一个或多个百分比和对应的配置块。`split_clients` 的第一个参数指定应匹配第一个配置块生效的客户端请求百分比,随后是处理这些客户端的规则。每个后续的配置块可以定义额外的百分比,从而有效地创建多个“桶”或分组,使每个桶可以以不同方式路由流量。这在例如对一部分用户测试新功能、同时将其余用户定向到稳定版本时非常有用。 举例来说,如果 70% 的客户端被路由到某个应用版本,而剩余的 30% 接收另一个版本,`split_clients` 指令可以根据客户端 IP 的哈希来管理这种分流。这样,单个用户在整个会话期间会始终落在分配给他们的版本上,这使得在 A/B 测试和渐进发布中能够保持一致的用户体验。
配置示例
split_clients ${remote_addr} 70% { server server_v1; }
30% { server server_v2; };⚠
确保所有已定义块的百分比总和为100%。
⚠
用于哈希的变量(例如$remote_addr)应在请求之间保持一致,以确保用户留在相同的桶中。
⚠
避免使用复杂条件或高基数数据,以确保分布均衡。