需使用第三方fair模块实现Nginx按后端响应速度动态负载均衡,它基于最近3次RTT平均值选择最快节点;需手动编译安装、在upstream中添加fair;指令,并配合max_fails等参数提升稳定性。

要让 Nginx 根据后端服务器的实际响应速度自动分发请求,需使用第三方 fair 模块。它不依赖静态权重或固定顺序,而是持续跟踪各节点的最近响应耗时(默认取最近 3 次 RTT 平均值),每次选最快的那个转发新请求。
编译安装 fair 模块
该模块未内置,必须手动集成进 Nginx:
- 下载 Nginx 源码与 nginx-upstream-fair 模块源码
- 进入 Nginx 源码目录,执行:
./configure --add-module=/path/to/nginx-upstream-fair - 运行
make && make install完成编译安装 - 验证是否生效:
nginx -V 2>&1 | grep -o fair,有输出即表示模块已加载
在 upstream 块中启用 fair 策略
配置非常简洁,无需额外参数,只需在 upstream 块内添加 fair; 指令:
http {<br> upstream backend {<br> fair;<br> server 192.168.1.10:8080;<br> server 192.168.1.11:8080;<br> server 192.168.1.12:8080;<br> }<br><br> server {<br> listen 80;<br> location / {<br> proxy_pass http://backend;<br> }<br> }<br>}
搭配健康检查提升稳定性
fair 本身不主动探测节点状态,建议显式配置容错参数:
- 为每个
server行加上max_fails=2 fail_timeout=10s,避免故障节点持续收请求 - 可选加
weight作初始倾向性引导(如性能明显强的机器设为 weight=2),但 fair 会动态覆盖该影响 - 不建议与
ip_hash或hash同时使用——两者逻辑冲突,会导致 fair 失效
适用场景与注意事项
fair 更适合响应时间波动大、后端能力不均或混合部署的环境:
- 微服务集群中多个实例处理延迟差异明显时效果突出
- 云+本地混合架构下,能自然降低高延迟节点的流量占比
- 注意:若后端全部响应极慢或超时频繁,fair 可能退化为轮询行为,此时应优先排查下游问题
- 日志中可通过
$upstream_response_time字段观察实际调度效果


















