set_hashed_upstream
在 NGINX 中设置一个用于一致性哈希的哈希上游变量。
NGINX Set-Misc module
·
httpserverlocationif in serverif in location
语法set_hashed_upstream variable string [options];
默认值none
上下文http, server, location, if in server, if in location
参数3
说明
set_hashed_upstream 指令是 NGINX Set-Misc 模块的一部分,用于根据上游参数计算哈希值,从而使请求能够一致地路由到上游服务器。该指令接受三个参数:用于存放计算得出哈希值的变量、用于确定哈希算法的字符串,以及一个可选参数,可与特定的上游配置或行为关联。因此该指令有助于实现负载均衡,并确保具有相同上游参数的请求始终被定向到同一台上游服务器,而不受可用服务器数量或新增服务器的影响。
使用 set_hashed_upstream 时,您可以影响请求在上游服务器之间的分布方式。这在需要会话粘滞或需要在来自同一客户端的请求之间保持会话状态一致的场景中特别有用。哈希函数可以帮助确保客户端始终访问同一后端服务器,从而在后端服务器上存有会话数据时,最大限度地减少会话丢失或状态不匹配等问题。因此,该指令在高可用或分布式应用部署中非常有价值。
配置示例
set_hashed_upstream $hashed_upstream "my_request_id";
⚠
请确保哈希算法字符串已正确指定;否则行为可能不可预测。
⚠
在不了解其影响的情况下,避免在 'if' 上下文中使用此指令,因为 NGINX 可能不会总是按预期工作。
⚠
确保被设置的变量不要也在 upstream block 中使用,因为这可能导致循环依赖。