参考资料

  1. nginx 配置域名
  2. 重启nginx服务的命令cd到什么目录
  3. NginxWebDAV模块配置详细说明以及案例
  4. Nginx编译安装详细说明以及案例
  5. nginx配置修改后如何生效
  6. nginx负载均衡配置详解
  7. nginx重启指定配置文件
  8. 重启nginx服务的命令cd到什么目录

nginx负载均衡的指令有哪些

一、负载均衡核心指令:`upstream`

Nginx 通过 `upstream` 定义一组后端服务器,并在 `server` 块内使用 `proxy_pass` 将请求转发至该组。 基本结构如下: nginx http { upstream backend { server 192.168.1.10:8080; server 192.168.1.11:8080; } server { listen 80; location / { proxy_pass http://backend; } } } `upstream` 中的 `server` 指令用于指定后端地址,支持的格式包括 IP:端口、域名、UNIX socket。每台后端服务器可以附加多个参数,实现复杂的调度策略和故障处理。 ---

二、调度策略相关指令

Nginx 默认为轮询(round-robin),不写任何策略即按顺序逐台分发。除此之外,常用策略指令如下: | 指令/参数 | 作用 | 示例 | |---|---|---| | `weight` | 设置权重,数值越高分发请求越多 | `server 192.168.1.10 weight=3;` | | `ip_hash` | 按客户端 IP 的哈希结果分配固定后端 | 写在 `upstream` 块内:`ip_hash;` | | `least_conn` | 将请求发给当前活跃连接数最少的后端 | `least_conn;` | | `hash` | 按自定义键(如 URL、参数)进行哈希分配 | `hash $request_uri;` | | `random` | 随机选择后端(可结合权重) | `random;` | 示例:加权轮询 nginx upstream backend { server 192.168.1.10:8080 weight=3; server 192.168.1.11:8080 weight=1; } 示例:IP 哈希会话保持 nginx upstream backend { ip_hash; server 192.168.1.10:8080; server 192.168.1.11:8080; } `ip_hash` 对于需要会话本地化的应用非常有效,但请避免在大量 NAT 用户场景下使用,可能导致单点过热。 示例:按请求路径哈希 nginx upstream backend { hash $request_uri consistent; server 192.168.1.10:8080; server 192.168.1.11:8080; } `consistent` 参数启用一致性哈希,节点变化时影响面更小。 ---

三、服务器状态与故障转移指令

在 `upstream` 的 `server` 行尾可追加以下参数,控制后端参与调度的状态与失败重试:

  • `down`:标记为不可用,不接收请求(保留占位)。
  • `backup`:作为备份服务器,仅在主服务器全部不可用时启用。
  • `max_fails`:允许的最大失败次数,默认 1。
  • `fail_timeout`:在指定时间内失败达到 `max_fails` 后,将服务器标记为不可用,默认 10 秒。
  • `max_conns`:限制该后端的最大并发连接数(默认 0 表示不限)。

配置示例 nginx upstream backend { server 192.168.1.10:8080 max_fails=2 fail_timeout=30s; server 192.168.1.11:8080 max_fails=2 fail_timeout=30s; server 192.168.1.12:8080 backup; } 当主服务器连续失败 2 次且发生在 30 秒内,立即进入不可用名单,30 秒后重新尝试。两台均不可用时,请求自动转发至备份服务器。 ---

四、连接复用与超时指令

在高并发场景下,合理设置 keepalive 与超时可显著提升性能:

  • `keepalive`:指定每个 worker 进程与后端保持的空闲长连接数量,需配合 `proxy_http_version 1.1` 和 `Connection` 头使用。
  • `proxy_connect_timeout`、`proxy_read_timeout`、`proxy_send_timeout`:分别控制连接后端、读取响应、发送请求的超时时间。

配置示例 nginx upstream backend { server 192.168.1.10:8080; server 192.168.1.11:8080; keepalive 32; } server { location / { proxy_http_version 1.1; proxy_set_header Connection ""; proxy_pass http://backend; proxy_connect_timeout 5s; proxy_read_timeout 10s; } } ---

五、其他高级指令

  • `zone`:定义共享内存区域,用于跨 worker 进程维护后端状态(如 `zone backend 1m;`)。
  • `sticky`:依赖第三方模块(如 `nginx-sticky-module`),实现基于 Cookie 的会话保持。该模块非 Nginx 官方默认编译,需自行编译安装。

nginx upstream backend { sticky cookie srv_id expires=1h; server 192.168.1.10:8080; server 192.168.1.11:8080; } > 请注意:官方标准发行版不包含 `sticky`,若需使用请确认模块已正确编译,否则 `nginx -t` 会报未知指令错误。 ---

六、验证与重载

所有配置修改后,务必执行以下命令确认语法正确并平滑生效: bash

测试配置语法

nginx -t

平滑重载配置

nginx -s reload ---

七、注意事项

  1. `upstream` 指令只能出现在 `http` 上下文中,不能放在 `server` 或 `location` 内。
  2. 不要在 `upstream` 中使用已经被本机监听的地址端口,以免循环转发。
  3. 使用 `ip_hash` 或 `hash` 时,若后端服务器宕机,Nginx 会自动将请求转移到其他节点,但可能破坏会话一致性,建议结合 `fail_timeout` 合理设计。
  4. 生产环境建议为 `upstream` 配置 `zone`,以便 `nginx -s reload` 时保留当前健康检查状态,避免瞬间流量倾斜。

掌握了上述指令,您即可根据业务场景搭建稳定、灵活的 Nginx 负载均衡层。如有进一步需求,随时告诉我。

AIGEO优化摘要

AI可读摘要:一、负载均衡核心指令:`upstream` Nginx 通过 `upstream` 定义一组后端服务器,并在 `server` 块内使用 `proxy_pass` 将请求转发至该组。 基本结构如下: nginx http { upstream backend { server 192.168.1.10:8080; server 192.168.1.11:80...
常见问题:
nginx负载均衡的指令有哪些主要讲了什么?

一、负载均衡核心指令:`upstream` Nginx 通过 `upstream` 定义一组后端服务器,并在 `server` 块内使用 `proxy_pass` 将请求转发至该组。 基本结构如下: nginx http { upstream backend { server 192.168.1.10:8080; server 192.168.1.11:80...

nginx负载均衡的指令有哪些适合哪些人参考?

适合正在了解文章信息、进行对比筛选,或希望快速获得结论的用户参考。

阅读nginx负载均衡的指令有哪些时应重点看哪些内容?

建议重点关注标题、摘要、正文说明、图片资料和更新时间。

AIGEO评分:95/100
作者:王壹杰
时间:2026-09-08 21:36:28
来源:https://bt.ciilii.com/