upstream

`upstream` 指令定义了一组用于负载均衡的后端服务器。 — NGINX HTTP Core

upstream
http
语法upstream name { server address [parameter]; ... }
默认值none
上下文http
模块NGINX HTTP Core
参数block (1)

说明

`upstream` 指令在 NGINX 中创建一个具名块,可以定义多个以负载均衡方式处理请求的后端服务器。在 `upstream` 块中,你可以指定多个服务器的详情,包括它们的地址和可选的权重。NGINX 支持多种负载均衡方法,例如轮询、最少连接数和 IP 哈希,这些也可以在 `upstream` 上下文中配置。 `upstream` 指令的语法允许在具名上下文下指定多个服务器。例如,你可以创建一个名为 `backend` 的 upstream 组,包含多个 `server` 块,每个代表不同的应用实例。每个 `server` 可以用其 IP 地址和可选参数来定义,例如 `max_fails` 和 `fail_timeout`,以控制 NGINX 如何处理服务器故障。此外,你可以通过指定 `least_conn`、`ip_hash` 等来调整负载均衡方法,以满足应用的需求。 `upstream` 指令没有任何默认值;它必须在配置文件中显式定义。配置完成后,它成为其他指令(例如 `proxy_pass`)的引用点,`proxy_pass` 可以使用该已定义的组来有效地将传入流量分配到指定的后端服务器。

配置示例

upstream backend {
    server backend1.example.com;
    server backend2.example.com weight=2;
    server backend3.example.com max_fails=3 fail_timeout=30s;
}

确保在 `http` 上下文中定义 upstream block,因为在 `server` 或 `location` 上下文中无效。

注意 health checks 和 failover logic,因为配置错误可能导致将流量发送到无响应的服务器。

upstream blocks 中的权重会影响 load distribution;确保其与预期的 load management 保持一致。