nginx通过反向代理与负载均衡优化集群效率与稳定性。它采用轮询、加权轮询等策略合理分发请求,配合健康检查、连接复用、真实ip透传等机制,确保后端服务器负载均衡且可观测。

Nginx 本身不增加后端服务器的物理算力,但它能显著提升集群整体的负载处理效率和稳定性。关键在于它作为反向代理与负载均衡器,把流量管好、连好、转好、兜住,让每台后端机器都“跑在合理区间”,而不是有的过载、有的空闲。
轮询调度:让请求均匀落下去
默认轮询(round robin)按顺序把请求分发到各后端,适合性能相近、无状态的服务(比如静态资源、轻量 API)。它不提升单机上限,但能让三台同构服务器接近承载三倍于单台的并发量。前提是后端响应时间稳定——若某台变慢或卡住,轮询仍会继续派发,必须配合 max_fails=3 fail_timeout=30s 自动隔离故障节点,否则反而拖垮集群。
加权轮询:匹配真实硬件差异
新旧服务器混用时,不能简单平均分配。比如一台新机器响应快、CPU 强,另一台老机器延迟高一倍,就该设 weight=4 和 weight=2,让流量按能力比例分摊。权重不是百分比,而是相对值;所有权重加起来决定每轮分发基数。避免设成 100 和 1 这种极端比例,否则小权重节点长期闲置,失去冗余价值。
连接复用:省掉反复建连的开销
高频短连接场景下,TCP 握手和断连消耗很大。在 upstream 块里加 keepalive 32,每个 worker 最多缓存 32 条空闲长连接;再在 location 里配 proxy_http_version 1.1 和 proxy_set_header Connection "",确保后端也复用连接。实测可降低后端 CPU 连接处理耗时约 40%,QPS 提升 35%。
健康检查与容错:不让故障传导
光靠轮询不够,得让 Nginx 主动“感知”后端状态。max_fails + fail_timeout 是基础被动检查;更进一步可用 proxy_next_upstream error timeout http_500 http_502 http_503 http_504,后端返回这些错误时自动重试另一台,用户几乎无感。有备用节点时加上 backup 标记,主集群全挂也能降级承接,避免容量归零。
真实 IP 透传与日志可观测
别忘了 proxy_set_header X-Real-IP $remote_addr 和 X-Forwarded-For $proxy_add_x_forwarded_for。否则后端看到的全是 Nginx 内网 IP,限流、审计、排障全失真。验证是否生效,可以用循环命令快速发几个请求,看返回是否按后端顺序交替出现,再查后端 access 日志确认来源 IP 是否正确。











