nginx中的upstream指令参数

本文介绍了如何通过Nginx配置将流量分散到三台Tomcat服务器,涉及max_conns限制、slow_start延迟启动、权重分配、健康检查与备份策略。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

 读以下配置前,请看使用nginx搭建三台tomcat集群_p&f°的博客-CSDN博客

#配置上游服务器
#所有参数均写在server后面
upstream xpff{
        server 192.168.217.130:8081 max_conns=2;
        server 192.168.217.130:8082 max_conns=2;
        server 192.168.217.130:8083 max_conns=2;
}

server{
        listen 80;
        server_name www.xpf.com;

        location / {
                proxy_pass http://xpff;
        }
}

1、 max_conns:设置server的最大连接数。默认值为0,没有限制。使用此参数,记得看nginx.conf的worker_processes是否为1。使用单个工作进程,就不会使用到共享内存。

 2、 slow_start:后接时间单位s。使服务器在指定时间慢慢启动。(注意:此参数在商业版nginx才有效)

#使得服务器在60s内,从关闭状态慢慢变成权重为6
server 192.168.217.130:8081 weight=6 slow_start=60s;

3、 down:告知nginx此集群中的这台server服务器已经不可用

4、 backup:备份server服务器。当集群中的其他服务器全部宕机时,会启用设置了backup参数的服务器。平常状态不启用。

5、max_fails和fail_timeout:最大失败次数失败时间段,两个参数需要一起使用默认值分别为1和10s(1次和10秒)

#在10s内访问到此服务器2次,若都访问失败,则认为此服务器暂时不可用,nginx则会把请求分发到其他服务器
#等待10s后继续访问此服务器,若2次都失败继续执行上述过程,若成功,则正常运行。
server 192.168.217.130:8081 max_fails=2 fail_timeout=10s;

### Nginx Upstream 配置及用法 Nginx 的 `upstream` 模块主要用于实现负载均衡和高可用性,通过合理的配置可以显著提升系统的性能和稳定性。以下是关于 Nginx `upstream` 的详细说明。 #### 1. 基础概念 `upstream` 是 Nginx 中的一个模块,允许用户定义一组后端服务器,并将其作为一个逻辑单元进行调用。这使得前端请求可以根据预设策略分发到不同的后端服务器上[^1]。 #### 2. 配置语法 在 Nginx 配置文件中,`upstream` 的基本结构如下: ```nginx upstream backend { server address[:port]; } ``` 其中: - `backend` 是自定义的名称,供后续 `proxy_pass` 或其他指令引用。 - `address[:port]` 表示后端服务器的 IP 地址或域名以及可选的端口号。 #### 3. 负载均衡算法 Nginx 提供多种内置的负载均衡算法,默认情况下采用轮询方式(Round Robin)。除此之外,还可以通过特定参数启用其他算法[^4]。 ##### (1)轮询模式 默认模式下,每次请求按顺序依次转发给列表中的每一台服务器。 ##### (2)加权轮询 (`weight`) 为每台服务器指定权重值,权重越高则分配更多请求。 ```nginx upstream backend { server 10.0.0.11:8080 weight=3; server 10.0.0.11:6060 weight=1; } ``` 此处,第一台服务器接收三倍于第二台服务器的流量[^3]。 ##### (3)基于客户端 IP 的哈希分布 (`ip_hash`) 此方法确保来自同一客户端的所有请求都被发送至固定的某一台服务器。 ```nginx upstream backend { ip_hash; server 10.0.0.11:8080; server 10.0.0.11:6060; } ``` 注意:当使用 `ip_hash` 时无法同时设置 `backup` 属性[^4]。 #### 4. 后端服务器状态控制 除了简单的地址声明外,还支持更精细的状态管理选项[^4]: | 参数 | 描述 | |------------|----------------------------------------------------------------------| | `down` | 手动禁用该服务器参与调度 | | `backup` | 只有主服务器全部失效时才激活 | | `max_conns`| 设置单个连接的最大数量 | | `max_fails`| 定义连续失败次数阈值 | | `fail_timeout`| 失败后的等待恢复时间 | 例如: ```nginx upstream backend { server 10.0.0.11:8080 max_fails=3 fail_timeout=30s; server 10.0.0.11:6060 backup; } ``` 以上片段表明第一个实例最多容忍三次错误,在三十秒内不再接受新任务;而第二个仅作为备用方案存在[^4]。 #### 5. 流量分割依据条件 (Map) 有时需要根据不同维度动态调整目标池子,则可通过 `map` 结合定制化规则达成目的[^2]。 ```nginx http { map $request_uri $target_group { default tomcat_pool_a; ~*/api/v2/ tomcat_pool_b; } upstream tomcat_pool_a {...}; upstream tomcat_pool_b {...}; server { location / { proxy_pass http://$target_group; } } } ``` 这里展示了如何利用 URI 特征划分两组独立的服务集合[^2]。 --- ### 示例代码展示 下面给出一个完整的例子来演示实际应用场景下的综合运用情况: ```nginx # 定义上游资源池 upstream app_servers { least_conn; # 使用最少连接数算法代替传统轮循机制 server 192.168.1.101:8080 max_conns=100 slow_start=30s; server 192.168.1.102:8080 max_fails=2 fail_timeout=10s; } server { listen 80; location /application { proxy_set_header Host $host; proxy_set_header X-Real-IP $remote_addr; proxy_pass http://app_servers/; } } ``` 上述脚本实现了对两个应用程序副本间的智能分流操作[^4]。 ---
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值