nginx下upstream模块详解

news/2025/2/12 17:42:42/

目录

一:介绍

二:特性介绍


一:介绍

Nginx的upstream模块用于定义后端服务器组,以及与这些服务器进行通信的方式。它是Nginx负载均衡功能的核心部分,允许将请求转发到多个后端服务器,并平衡负载。

在upstream模块中,你可以定义一个或多个后端服务器,并指定每个服务器的权重、端口号等属性。通过这些设置,Nginx可以根据不同的负载均衡算法将请求转发到后端服务器。

二:特性介绍

server:定义一个后端服务器,指定服务器的IP地址和端口号。可以添加其他相关属性,如权重、最大连接数等。

upstream backend {  
    server 192.168.0.100:8080;  
    server 192.168.0.101:8080 weight=2;  
}

balance:指定用于负载均衡的算法。Nginx提供了多种算法,如round-robin(轮询)、least_conn(最少连接数)等

upstream backend {  
    server 192.168.0.100:8080;  
    server 192.168.0.101:8080;  
    balance round-robin;  
}

failover、backup:这些指令可用于指定后端服务器的主备切换策略。当主服务器出现故障时,请求将被转发到备用服务器。

upstream backend {  
    server 192.168.0.100:8080 primary;  
    server 192.168.0.101:8080 backup;  
}

sticky:该指令可用于实现会话保持功能,将同一用户的请求转发到同一后端服务器。可以通过cookie或其他机制实现会话跟踪。

以下是Sticky的工作原理:

当客户端首次发起访问请求时,Nginx会检查请求头中是否包含cookie。如果cookie不存在,Nginx将以轮询的方式将请求分发给后端服务器。
后端服务器处理完请求后,将响应数据返回给Nginx。此时,Nginx会生成一个带route的cookie,并返回给客户端。route的值与后端服务器对应,可能是明文,也可能是md5、sha1等Hash值。
客户端接收请求并保存带route的cookie。
当客户端下一次发送请求时,会带上route,Nginx根据接收到的cookie中的route值,将请求转发给对应的后端服务器。
通过这种方式,Sticky模块确保了同一个客户端的请求始终落在同一台服务器上,这有助于保持会话状态和数据一致性。这种机制在需要保持客户端与服务器之间持久连接的应用程序中特别有用,例如Web应用程序或实时通信系统。

ip_hash:该算法基于客户端的IP地址进行哈希计算,确保同一客户端的请求始终转发到同一后端服务器。这对于需要保持会话状态的应用程序很有用。

hash:使用自定义的哈希算法进行负载均衡。可以指定一个字符串作为键值,并根据该键值进行哈希计算来选择后端服务器。

least_conn:选择当前连接数最少的后端服务器进行处理。这种算法可以确保负载均衡更加均匀,避免某些服务器过载。

url_hash:基于URL参数进行哈希计算,并根据哈希值选择后端服务器。这种算法适用于某些特定的路由需求。

upstream backend {  
    hash $request_uri;  
    server 192.168.0.100:8080;  
    server 192.168.0.101:8080;  
}


http://www.ppmy.cn/news/1297892.html

相关文章

Vue3-39-路由-导航异常的检测 afterEatch 与 编程式导航之后的订阅动作

说明 本文主要是介绍一下 路由的后置守卫 afterEatch 的一个重要的作用 : 就是检测路由异常信息。 它的实现方式是 通过第三个参数来返回的。 而且,它的异常检测是全局的。导航的异常有以下三种类型: aborted : 在导航守卫中 被拦截并返回了…

【实用工具指南 三】CHAT-GPT4接入指南

好消息,CHAT-GPT4终于开放订阅了,聪明的人已经先用上了,先上个图。 但是去订阅的时候发现银行卡验证不通过,后来一查必须是老美的州才行,于是买了个美元虚拟卡 接下来就比较简单,直接找客服把GPT的充值界…

并发程序设计--D11D12进程间通信

概念:就是进程和进程之间交换信息。 常用通信方式 无名管道(pipe) 有名管道 (fifo) 信号(signal) 共享内存映射(mmap) 套接字(socket) 过时的IPC通信方式 System…

Influxdb2修改管理员密码

通过恢复管理员令牌来重置InfluxDB2管理员的密码 1.找到数据库的配置文件 一般为config.json 2.配置文件的的blod文件配置 3.在这个混合文本和二进制json文件中搜索已知的用户名或token之类的字符串。 例如: "id":"0bd73badf2941000","…

最新最简操作系统期末复习(考前速过)

操作系统复习 第一章(操作系统引论)计算机操作系统包括:操作系统的目标:操作系统的作用:未配置操作系统的计算机系统:单道批处理系统:缺点: 多道批处理系统:优点&#xf…

【案例实战】业务稳定性运行之全链路混合压测

1.全链路压测开展步骤 (1)什么是全链路压测 全链路压测是指基于真实业务场景,通过模拟海量的用户请求,对整个后台服务进行压力测试,从而评估整个系统的性能水平。 对应用程序的整个技术栈进行完整的压力和性能测试&a…

uni-app使用uni-ui加ts类型限制

uni-app使用uni-ui加ts类型限制 安装 uni-ui 组件库 pnpm i dcloudio/uni-ui配置自动导入组件 // pages.json {// 组件自动导入"easycom": {"autoscan": true,"custom": {// uni-ui 规则如下配置 "^uni-(.*)": "dcloudio/uni…

C++力扣题目-- 二叉树层序遍历

102.二叉树的层序遍历(opens new window)107.二叉树的层次遍历II(opens new window)199.二叉树的右视图(opens new window)637.二叉树的层平均值(opens new window)429.N叉树的层序遍历(opens new window)515.在每个树行中找最大值(opens new window)116.填充每个节点的下一个右…