hash

'hash' 指令设置用于在 NGINX 中将请求分配到上游服务器的 hash 算法。 — NGINX HTTP Core

hash
upstream
语法hash key [algorithm];
默认值none
上下文upstream
模块NGINX HTTP Core
参数1-2

说明

'hash' 指令在 'upstream' 上下文中用于定义一个用于将客户端请求分发到已定义上游服务器的 hash 算法。该机制允许 NGINX 基于键的哈希(通常是 IP 地址或其他指定数据)在多个后端服务之间进行负载均衡管理。 该指令可以接受一个或两个参数。第一个参数是要进行哈希的键,可选的第二个参数允许指定特定算法(例如 'consistent')。默认行为使用一个简单的哈希算法,但指定算法可以提供确定性的结果,从而提高会话持久性。 在使用 'hash' 指令时,应考虑各种因素,例如上游服务器的数量和会话亲和性要求,以获得最佳性能。该指令确保来自同一客户端的请求(基于 hash 键)会始终发送到相同的上游服务器,这对于依赖会话数据本地存储在特定服务器上的有状态应用尤其有益。

配置示例

upstream backend {
    hash $remote_addr;
    server backend1.example.com;
    server backend2.example.com;
}

使用非默认哈希算法时,请确保与上游服务器配置兼容。

会话持久性配置错误可能导致负载分配不均或延迟增加。

请记得审查客户端密钥的选择,以防止哈希冲突,这可能会对负载均衡行为产生不利影响。