zone
'zone' 指令在 NGINX 中定义了用于会话状态数据的共享内存区域。 — NGINX HTTP Core
zone
upstream
语法zone name zone_size;
默认值none
上下文upstream
模块NGINX HTTP Core
参数1-2
说明
'zone' 指令主要在 upstream 上下文中使用,帮助管理用于跨多个请求的变量的共享内存。它创建了一个可以被不同 NGINX 进程访问的共享内存区,这对于存储会话数据或连接相关信息至关重要。 该指令接受一个或两个参数:共享内存区的名称和可选的大小。分配的内存可以存储多种与会话相关的数据,这使得 NGINX 能更智能地处理诸如负载均衡和健康检查等功能。每个 zone 可以配置特定的大小以容纳可能同时发生的预期会话数。如果大小过小,可能导致会话被丢弃或处理不当,从而出现意外行为。 在定义 zone 时,NGINX 会从系统中分配指定数量的内存。该 zone 的内存在 worker 进程之间保持,从而使会话数据无论由哪个 worker 处理请求都能保持可用且一致。因此,'zone' 指令对需要高可用性和低延迟的应用特别有用,例如涉及粘性会话、缓存机制或其他共享状态场景的应用。
配置示例
upstream backend {
zone my_zone 64k;
server backend1.example.com;
server backend2.example.com;
}⚠
确保 zone 的大小满足应用的需求;过小的 zone 可能导致数据丢失。
⚠
每个上下文中只能定义一个 'zone' 指令,以避免冲突。