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' 指令,以避免冲突。