Nginx 之Upstream使用详解

文章目录

    • 1. 概述
    • 2. 配置示例及指令说明
      • 2.1 配置示例
      • 2.2 指令
        • upstream
        • server
      • 2.3 参数配置
    • 3. 负载均衡和故障转移
      • 3.1 max_fails 和 fail_timeout
      • 3.2 proxy_next_upstream
      • 3.3 proxy_next_upstream_tries
      • 3.4 proxy_next_upstream_timeout
    • 4. 负载均衡策略
    • 5. 动态 Upstream 配置
    • 6. 总结


1. 概述

Nginx 的 ngx_http_upstream_module 模块用于定义服务器组,这些服务器组可以被 proxy_passfastcgi_passuwsgi_passscgi_passmemcached_passgrpc_pass 指令引用。该模块为反向代理提供了负载均衡和故障转移等重要功能。

2. 配置示例及指令说明

2.1 配置示例

# 定义一个名为 'backend' 的 upstream 组,用于负载均衡和故障转移
upstream backend {
    # 将请求分发到 backend1.example.com,权重为 5,意味着它将接收更多的流量
    server backend1.example.com weight=5;
    
    # 将请求分发到 backend2.example.com 的 8080 端口
    server backend2.example.com:8080;
    
    # 通过 UNIX 套接字将请求分发到本地的 backend3 服务
    server unix:/tmp/backend3;
    
    # 定义两个备份服务器,仅当主服务器不可用时才会被使用
    server backup1.example.com:8080 backup;
    server backup2.example.com:8080 backup;
}

# 定义一个 server 块,用于监听进来的 HTTP 请求
server {
    # 定义 location 块,匹配所有 URI(/ 表示根路径)
    location / {
        # 使用 proxy_pass 指令将请求转发到定义的 upstream 'backend' 组
        proxy_pass http://backend;
    }
}

这段配置定义了一个上游服务器组 backend,其中包含三台主服务器和两台备份服务器。主服务器中,backend1.example.com 被赋予了更高的权重,意味着它将处理更多的请求。backend2.example.com 和通过 UNIX 套接字通信的 backend3 被设置为默认权重。当主服务器不可用时,请求将被转发到备份服务器 backup1.example.combackup2.example.com

server 块中,所有进入的请求(由于 location / 匹配所有 URI)都将通过 proxy_pass 指令被转发到 backend 上游服务器组。这意味着 Nginx 将作为反向代理

你可能感兴趣的:(云计算,Linux系统,nginx,运维,开源,服务器)