Nginx 的 upstream 模块是用于定义一组上游服务器,并在请求过程中实现负载均衡、故障转移和高可用性的模块。这使得 Nginx 可以充当反向代理服务器,将请求转发到多个上游服务器中的一个或多个,以提高系统的性能和可用性。

以下是 upstream 模块的主要特性和用法:

1. 定义上游服务器:

使用 upstream 指令在配置文件中定义一组上游服务器。例如:
http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    server {
        location / {
            proxy_pass http://backend;
        }
    }
}

在上述配置中,upstream backend 定义了一个名为 backend 的上游组,包含了三个服务器。proxy_pass http://backend; 将请求转发到这个上游组。

2. 负载均衡:

upstream 模块支持多种负载均衡算法,默认是轮询(Round Robin)。可以使用 least_conn、ip_hash 等指令来配置负载均衡算法。例如:
upstream backend {
    least_conn;
    server backend1.example.com;
    server backend2.example.com;
    server backend3.example.com;
}

上述配置中,使用 least_conn 指令配置了最小连接数的负载均衡算法。

3. 高可用性和故障转移:

upstream 模块支持定义备用服务器,以提高系统的可用性。例如:
upstream backend {
    server backend1.example.com;
    server backend2.example.com backup;
}

上述配置中,如果 backend1.example.com 不可用,请求将被转发到 backend2.example.com。

4. 健康检查:

upstream 模块支持通过 health_check 指令进行健康检查。健康检查可以定期检测上游服务器的可用性,并根据检查结果进行请求的分发。例如:
upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    health_check;
}

5. 配置参数:

upstream 模块还支持一系列配置参数,用于控制连接池大小、超时设置、失败次数等。例如:
upstream backend {
    server backend1.example.com max_fails=3 fail_timeout=30s;
    server backend2.example.com max_conns=5;
}

上述配置中,max_fails 设置了最大失败次数,fail_timeout 设置了失败超时时间。max_conns 则设置了每个上游服务器的最大并发连接数。

这些只是 upstream 模块的一些基本用法和配置选项,它提供了丰富的功能,可以满足不同场景下的需求。详细的配置选项和更高级的功能可以在 Nginx 官方文档中找到。


转载请注明出处:http://www.zyzy.cn/article/detail/10155/Nginx