Nginx Upstream了解一下

文章目录

    • 1 核心功能与基础配置
      • 1.1 定义服务器集群
      • 1.2 负载均衡策略
        • 1.2.1 轮询(Round Robin)
        • 1.2.2 加权轮询(Weighted Round Robin)
        • 1.2.3 IP哈希(IP Hash)
        • 1.2.4 最少连接数(Least Connections)
        • 1.2.5 随机(Random)
        • 1.2.6 Fair(响应时间优先)【扩展】
        • 1.2.7 URL哈希(URL Hash)【扩展】
    • 2 server字段详解
      • 2.1 核心配置属性
        • 2.1.1 weight
        • 2.1.2 `max_fails` 与 `fail_timeout`
        • 2.1.3 `backup`
        • 2.1.4 `down`
        • 2.1.5 `max_conns`
        • 2.1.6 `slow_start`
        • 2.1.7 `resolve`
        • 2.1.8 `route`
      • 2.2 高级配置与优化
        • 2.2.1 长连接优化
        • 2.2.2 SSL/TLS 配置
        • 2.2.3 IP哈希与会话保持
      • 2.3 配置示例与最佳实践
    • 3 高级配置与扩展功能
      • 3.1 会话保持
      • 3.2 健康检查与故障转移
      • 3.3 动态配置
    • 4 实际应用场景
      • 4.1 无状态服务分发
      • 4.2 会话敏感型应用
      • 4.3 高可用架构
      • 4.4 缓存与CDN优化
    • 5 配置示例
    • 6 使用注意事项
      • 6.1 域名解析缓存
      • 6.2 第三方模块依赖
      • 6.3 会话一致性风险

如果你的网站使用Nginx,一定很熟悉nginx配置吧,其中最常修改的莫过于 location,但是还有个非常重要的模块就是 upstream,今天就根据自己配置的经验及整理的资料做一总结。

Nginx 的 upstream 模块是负载均衡的核心组件,用于定义和管理后端服务器集群,实现请求分发、故障转移和高可用性。以下从核心功能、配置策略、高级特性及实际应用场景展开详解:

1 核心功能与基础配置

nginx.conf 配置文件中,server 模块通过 proxy_pass将特定的请求负载均衡到不同服务器上,简单配置及示意图如下。

upstream backend {
  # 负载均衡策略
  least_conn;
  # 主服务器配置
  server 192.168.1.101 weight=3 max_fails=2 fail_timeout=30s max_conns=200;
  server 192.168.1.102 weight=2 slow_start=60s;
  # ...其他配置
}

server {
  listen 80;
  location / {
    proxy_pass http://backend;
    proxy_set_header Host $host;
  }
}

Nginx Upstream了解一下_第1张图片

1.1 定义服务器集群

upstream 块用于声明一组后端服务器(即上游服务器),支持域名、IP、端口及UNIX域套接字。

示例

http {
  upstream backend {
    server backend1.example.com:8080 weight=3;
    server 192.168.1.102 max_fails=2 fail_timeout=30s;
    server unix:/tmp/backend.sock backup;
  }
}
  • weight:权重控制请求分配比例(如权重3:2)。
  • backup:标记为备用服务器,主节点失效时启用。
  • max_failsfail_timeout:定义健康检查阈值(如30秒内失败2次则标记为不可用)。

1.2 负载均衡策略

Nginx 支持多种负载均衡策略,其配置灵活且适用于不同场景。以下是主流策略及其配置方法:

1.2.1 轮询(Round Robin)
  • 原理:按请求顺序依次分发到后端服务器,默认策略。
  • 适用场景:服务器性能相近,无状态服务(如静态资源分发)。
upstream backend {
  server 192.168.1.101;
  server 192.168.1.102;
}
1.2.2 加权轮询(Weighted Round Robin)
  • 原理:根据权重分配请求,权重越高分配的请求越多。
  • 适用场景:服务器性能不均(如高配置机器权重设为3,低配设为1)。
upstream backend {
  server 192.168.1.101 weight=3;  # 处理约60%的请求
  server 192.168.1.102 weight=2;  # 处理约40%的请求
}
1.2.3 IP哈希(IP Hash)
  • 原理:根据客户端IP的哈希值固定分配到同一服务器。
  • 适用场景:需保持会话一致性的场景(如登录状态、购物车)。
upstream backend {
  ip_hash;
  server 192.168.1.101;
  server 192.168.1.102;
}
1.2.4 最少连接数(Least Connections

你可能感兴趣的:(nginx,前端,运维)