当前位置: 首页 > news >正文

nginx正反向代理,负载均衡

Nginx

正向代理,反向代理 ,负载均衡

Nginx有两种代理协议

七层代理(http协议)

四层代理(tcp/udp流量转发)

四层代理七层代理概念

四层代理

四层代理:基于tcp/ip协议层的转发代理方式,基于ip和端口号实现负载均衡,或者正向代理。

四层代理无法获取http请求中的URL信息,只能对tcp或者udp的数据包进行转发

七层代理七层代理,代理的是http的请求和响应,客户端请求代理服务器,由代理服务器转发客户端的http请求,转发到内部的服务器(可以是单台,也可以是一组),后端的websever,再把响应送达代理服务器,最后再到客户端

正反向代理

正向代理客户端访问代理服务器,代理服务器转发请求,客户端只知道代理的地址,后端的webserver的ip地址,客户端也不知道
反向代理客户端访问的是代理服务器,代理服务器转发http请求,但是客户端不知道访问的是哪一台服务器

四层代理和七层代理之间的区别

四层代理四层代理速度更快,四层代理是基于IP地址和端口号,只负责将ip和端口转到后端服务器,不对请求做任何处理,只是负责转发而已,而且四层转发走的是内核态,四层代理无法提供更改功能,只是转发
七层代理走的是用户态,需要对http的请求进行处理和解析,在解析过程中可以根据请求头和请求体的内容进行一定的操作,内容过滤。转发比较慢,但是提供的功能更高级,用户的体验更好

正向代理和反向代理

正向代理:都是通过代理服务器访问,明确指向了后端服务器,一般都是1对1

反向代理:都是通过代理服务器访问,但一个代理服务器会有多台后端服务器供代理服务器进行转发请求,只有一对多,才涉及负载均衡的算法问题

选择场景(什么时候用四层和七层)

1.七层代理:需要对http请求进行控制和处理,只能选择七层代理(工作中常见的的代理方式)

2.四层代理:只需要对tcp/udp数据包(流量转发),可以选择四层,也可以选择七层代理

3.七层可以对ip和端口进行转发,也可以对域名进行代理

4.四层只能是ip和端口,不能对域名进行代理

5.负载均衡算法:有些是无法在四层代理使用

模块

七层代理只能写在http模块的全局配置当中

Upstream:用于处理http请求,支持方向代理,负载均衡,缓存功能

在ypstream模块中可以对配置多个服务器

四层代理的模块stream

Stream只能写在全局模块当中的单独配置,stream代理无所谓协议的,只管流量

正向代理

似于vp,科学上网,加速器,指定国家

反向代理

企业架构都是反向代理

客户端通过代理服务器访问,但是后端有多台

七层代理

http全局配置

Upstream  test(可以自定义名称) {

server 192.168.233.62;

Server 192.168.233.63;

}

Location  {

Proxy_pass http://test;

}

负载均衡的算法

1.rr(round  robin) 负载均衡最简单的算法,轮询,请求轮流分配到后端服务器,默认算法,可以不加,

默认算法,特点是每发起一次都是新的请求,服务器上没有缓存

服务器处理能力相近,而且,对访问量比较小的网站适用

2.weight加权轮询 建立在默认轮询算法的基础之上,为后端服务器分配不同的权重,处理能力强的服务器可以分配的权重值要高一些。

轮询次数基本上按照权重进行分配,服务器上也没有缓存

中大型网站可以使用加权轮询

权重高的服务器会被频繁请求响应,权重低的可能闲置,这种情况回合另外一种算法配合使用

3.最少连接数算法,会把请求发送到连接数量较少的后端服务器,   least_conn;

最少连接算法可以单独使用,但是一般都是结合加权轮询一块使用,避免所以得请求都发送到处理能力强的服务器

提高整个集群的稳定性

中型网站,大型网站,日常访问可以满足

4.ip_hash :iphash会根据客户端ip地址解析出一个hash值,然后将请求放到对应的后端服务器,下一次用户再访问时,同一客户端的请求将会被分配到同一台服务器

Ip_hash第一次访问之后,后续访问是有缓存的

如果后端服务器的数量发生变化,可能会进行重新分配

Ip_hash适用于高并发,请求不会跳转,请求的是本地缓存

即使分配了权重它依然只会选择同一服务器地址

5.url_hash:根据请求url地址计算hash值,然后将请求发送到相应的后端服务器,相同的url地址请求会被分配到同一个服务器

Url_hash和ip_hash 是可以结合在一块使用,也是可以适用于并发较高的场景,主要是ip_hash和url_hash访问之后第二次都是访问本地缓存,可以降低后端服务器的压力

基于域名的反向代理

主机1

主机2

主机3

四层的反向代理

四层的反向代理

events {

在四层代理中可以使用加权轮询,最小连接数算法也可以实现负载均衡

但ip_hash 和 url_hash 不可以在stream中使用,四层只是转发数据包,不能对请求进行处理

http七层代理可以处理地址,可以处理请求地址和请求的url

方式

1.轮询 :默认算法 可以不加 ,每个后端服务器都会换一次

2.加权轮询 :给后端服务器设置不同的权重,通过权重分发代理请求(客户端请求),权重高的轮询的次数就多,权重少,轮询的次数就比较少,但是不绝对,而且有一种可能,会导致权重高的服务器会被频繁的请求,权重少的在一边闲置

3.最小连接数:会把请求转发到当前连接数较小的服务器,避免请求集中到高性能或者高权重的服务器,可以加权轮询配合使用,适用于大部分场景

4.Ip_hash:根据客户端请求的ip地址生成一个hash值,然后转发到后端服务器,下一次在访问,还是之前的服务器,而且还有缓存,如果还有需要把请求客户端地址,转发到固定的服务器,可以使用这个方法,大并发,小并发都可以用,具体看企业需求,但是后端服务器发生变化(比如损坏),请求的后端服务器也会发生变化(后端服务器数量变少,后端服务器的数量增加,请求的地址未必会变)

        缩容的情况,业务量比较少,不需要那么多后端服务器,才会缩容,只会扩

5.url_hash : 根据请求的url地址生产一个hash值,然后转发到后端服务器,但是下一次访问访问,请求的url不练,还是上次访问的后端服务器,而且也有缓存

Url地址发生变化,或者后端服务器数量也发生变化,可能会变更后端服务器的地址

相关文章:

nginx正反向代理,负载均衡

Nginx 正向代理,反向代理 ,负载均衡 Nginx有两种代理协议 七层代理(http协议) 四层代理(tcp/udp流量转发) 四层代理七层代理概念 四层代理 四层代理:基于tcp/ip协议层的转发代理方式&#…...

物联网中的MQTT协议总结

本文引注: https://mp.weixin.qq.com/s/y55wqYoWEvU9Q3-I0uu3cg 物联网曾被认为是继计算机、互联网之后,信息技术行业的第三次浪潮。随着基础通讯设施的不断完善,尤其是 5G 的出现,进一步降低了万物互联的门槛和成本。物联网本身也是 AI 和区…...

断点续传的原理和实现

断点续传是一种文件上传或下载的技术,允许用户在上传或下载中断后恢复操作而不必重新开始。其原理和实现可以分为以下步骤: 原理: 文件分割:将大文件分割成小块(分片)。上传/下载:客户端上传或…...

【小黑嵌入式系统第二课】嵌入式系统的概述(二)——外围设备、处理器、ARM、操作系统

上一课: 【小黑嵌入式系统第一课】嵌入式系统的概述(一)——概念、特点、发展、应用 下一课: 【小黑嵌入式系统第三课】嵌入式系统硬件平台(一)——概述、总线、存储设备(RAM&ROM&FLASH…...

Unity3D 在做性能优化时怎么准确判断是内存、CPU、GPU瓶颈详解

Unity3D是一款广泛应用于游戏开发的跨平台游戏引擎,但在开发过程中,我们经常会遇到性能瓶颈问题,如内存、CPU和GPU瓶颈。本文将详细介绍在Unity3D中如何准确判断和解决这些瓶颈问题,并给出相应的技术详解和代码实现。 对惹&#…...

pyqt5 QProgressDialog 进度条的使用 下载自动更新应用程序

pyqt5 QProgressDialog 进度条的使用 案例截图 思路 实例化进度条窗口设置窗口各属性包括标题 提示文字 和 窗口大小显示进度条窗口同过一个for循环 模拟进度 代码 from PyQt5.QtCore import QCoreApplication, QProcess from PyQt5.QtWidgets import QApplication,QProgre…...

【yolov5目标检测】使用yolov5训练自己的训练集

数据集准备 首先得准备好数据集,你的数据集至少包含images和labels,严格来说你的images应该包含训练集train、验证集val和测试集test,不过为了简单说明使用步骤,其中test可以不要,val和train可以用同一个,…...

出差学小白知识No5:ubuntu连接开发板|上传源码包|板端运行的环境部署

1、ubuntu连接开发板&#xff1a; 在ubuntu终端通过ssh协议来连接开发板&#xff0c;例如&#xff1a; ssh root<IP_address> 即可 这篇文章中也有关于如何连接开发板的介绍&#xff0c;可以参考SOC侧跨域实现DDS通信总结 2、源码包上传 通过scp指令&#xff0c;在ub…...

C++(初阶四)类和对象

文章目录 一、面向过程和面向对象初步认识二、类的引入三、类的定义1、类的概述2、类的两种定义3、成员变量命名规则的建议 四、类的访问限定符及封装1、访问限定符2、封装 五、类的作用域六、类的实例化七、类对象模型1、如何计算类对象的大小2、 类对象的存储方式猜测3、 验证…...

CSS餐厅练习链接及答案

目录 链接&#xff1a; level 1 level 2 level 3 level 4 level 5 level 6 level 7 level 8 level 9 level 10 level 11 level 12 level 13 level 14 level 15 level 16 level 17 level 18 level 19 level 20 level 21 level 22 level 23 level 24 le…...

嵌入式和 Java选哪个?

今日话题&#xff0c;嵌入式和 Java 走哪个?对于嵌入式领域有浓厚兴趣的人&#xff0c;并不会比Java行业薪资低&#xff0c;处于上中游水平。特别是从2020年开始&#xff0c;嵌入式领域受益于芯片产业的兴起&#xff0c;表现出了强劲的增长势头。薪资水平受多方面因素影响。以…...

创建带Axi_Lite接口的IP核与AXI Interconnect(PG059)

AXI Interconnect互连内核将一个或多个 AXI 内存映射主设备连接到一个或多个内存映射从设备。 参考小梅哥文档。 /**************************** 类型定义 ****************** **********/ /** * * 将值写入 AXI_REG_LIST 寄存器。执行 32 位写入。 * 如果组件以较小的宽度实…...

快速解决 Resource not accessible by integration

简介 最近好久没有写博客了&#xff0c;今天在写开源项目 python-package-template 的时候&#xff0c;正好遇到一个问题&#xff0c;记录一下吧。本文将介绍 Resource not accessible by integration 的几种解决方案。 也欢迎大家体验一下 python-package-template 这个项目&…...

港联证券:资金融通构成强支撑 “一带一路”金融合作开新局

本年是共建“一带一路”主张提出十周年。经过十年打开&#xff0c;共建“一带一路”从夯基垒台、立柱架梁到落地生根、持久打开&#xff0c;已成为打开包容、互利互惠、协作共赢的国际协作途径。“资金融通”作为首份“一带一路”白皮书提出的“五通”之一&#xff0c;定位为“…...

mysql varchar int

年龄是数字类型int SELECT * FROM test ORDER BY age; 年龄是字符类型varchar SELECT * FROM test ORDER BY code; 第1种 补前导0可以和数字一样排序 MySQL会比较字符的ASCII值&#xff0c;并根据这些值来确定字符的排列顺序。 印象中oracle好像也是吧。 ASCII (American …...

阿里云/腾讯云国际站账号:私服游戏服务器:阿里云CTO周靖人:AI时代,为什么阿里云一定要做开源

开源技术报告&#xff0c;阿里云私服游戏服务器怎么看待大模型的路径&#xff1f; 随着 Meta 的 Llama2 开源&#xff0c;开源模型&#xff0c;以及聚集大模型开发者的开源社区&#xff0c;正在发挥不可或缺的作用。 一个例子是&#xff0c;上个月 Hugging Face 得到了谷歌、…...

搭建Pytorch的GPU环境超详细

效果 1、下载和安装VS2019 https://visualstudio.microsoft.com/zh-hans/vs/older-downloads/ 登录需要用户名和密码 安装后需要联网下载组件的,安装的时候要勾选使用C++的桌面开发 2、下载和安装显卡驱动 查看自己的显卡型号 从英伟达下载和安装最新驱动...

ppt录屏怎么导出来?学会这个,让分享更容易

ppt已经成为了日常工作与学习中必不可少的工具&#xff0c;而ppt屏幕录制功能&#xff0c;可以方便用户将他人的演讲或视频中的内容记录下来&#xff0c;以便进一步学习与研究。录制ppt演示并将其导出为视频文件&#xff0c;可以帮助我们进行分享&#xff0c;但是很多人不知道p…...

【Linux笔记】Linux基础权限

【Linux笔记】Linux基础权限 一、Linux权限的概念1.1、Linux中一切皆文件1.2、文件访问者的分类1.3、、Linux中的“用户白名单” 二、文件访问权限的修改2.1、权限的增加和减少的基础方法2.2、以八进制数修改权限 三、用户身份的修改3.1、修改文件的拥有者3.2、修改文件的所属组…...

汽车屏类产品(三):抬头显示Head-Up Display(HUD)

前言 你的下一台车,一定要考虑加装一个HUD。 汽车抬头显示器或汽车抬头显示器(也称为汽车HUD)是任何透明的显示器,它可以在汽车中显示数据,而不需要用户将视线从平时的视角移开。这个名字的由来源于飞行员能够在头部“向上”并向前看的情况下查看信息,而不是向下倾斜查…...

DockerHub与私有镜像仓库在容器化中的应用与管理

哈喽&#xff0c;大家好&#xff0c;我是左手python&#xff01; Docker Hub的应用与管理 Docker Hub的基本概念与使用方法 Docker Hub是Docker官方提供的一个公共镜像仓库&#xff0c;用户可以在其中找到各种操作系统、软件和应用的镜像。开发者可以通过Docker Hub轻松获取所…...

Debian系统简介

目录 Debian系统介绍 Debian版本介绍 Debian软件源介绍 软件包管理工具dpkg dpkg核心指令详解 安装软件包 卸载软件包 查询软件包状态 验证软件包完整性 手动处理依赖关系 dpkg vs apt Debian系统介绍 Debian 和 Ubuntu 都是基于 Debian内核 的 Linux 发行版&#xff…...

【HarmonyOS 5.0】DevEco Testing:鸿蒙应用质量保障的终极武器

——全方位测试解决方案与代码实战 一、工具定位与核心能力 DevEco Testing是HarmonyOS官方推出的​​一体化测试平台​​&#xff0c;覆盖应用全生命周期测试需求&#xff0c;主要提供五大核心能力&#xff1a; ​​测试类型​​​​检测目标​​​​关键指标​​功能体验基…...

五年级数学知识边界总结思考-下册

目录 一、背景二、过程1.观察物体小学五年级下册“观察物体”知识点详解&#xff1a;由来、作用与意义**一、知识点核心内容****二、知识点的由来&#xff1a;从生活实践到数学抽象****三、知识的作用&#xff1a;解决实际问题的工具****四、学习的意义&#xff1a;培养核心素养…...

将对透视变换后的图像使用Otsu进行阈值化,来分离黑色和白色像素。这句话中的Otsu是什么意思?

Otsu 是一种自动阈值化方法&#xff0c;用于将图像分割为前景和背景。它通过最小化图像的类内方差或等价地最大化类间方差来选择最佳阈值。这种方法特别适用于图像的二值化处理&#xff0c;能够自动确定一个阈值&#xff0c;将图像中的像素分为黑色和白色两类。 Otsu 方法的原…...

3-11单元格区域边界定位(End属性)学习笔记

返回一个Range 对象&#xff0c;只读。该对象代表包含源区域的区域上端下端左端右端的最后一个单元格。等同于按键 End 向上键(End(xlUp))、End向下键(End(xlDown))、End向左键(End(xlToLeft)End向右键(End(xlToRight)) 注意&#xff1a;它移动的位置必须是相连的有内容的单元格…...

2023赣州旅游投资集团

单选题 1.“不登高山&#xff0c;不知天之高也&#xff1b;不临深溪&#xff0c;不知地之厚也。”这句话说明_____。 A、人的意识具有创造性 B、人的认识是独立于实践之外的 C、实践在认识过程中具有决定作用 D、人的一切知识都是从直接经验中获得的 参考答案: C 本题解…...

scikit-learn机器学习

# 同时添加如下代码, 这样每次环境(kernel)启动的时候只要运行下方代码即可: # Also add the following code, # so that every time the environment (kernel) starts, # just run the following code: import sys sys.path.append(/home/aistudio/external-libraries)机…...

Linux系统部署KES

1、安装准备 1.版本说明V008R006C009B0014 V008&#xff1a;是version产品的大版本。 R006&#xff1a;是release产品特性版本。 C009&#xff1a;是通用版 B0014&#xff1a;是build开发过程中的构建版本2.硬件要求 #安全版和企业版 内存&#xff1a;1GB 以上 硬盘&#xf…...

OD 算法题 B卷【正整数到Excel编号之间的转换】

文章目录 正整数到Excel编号之间的转换 正整数到Excel编号之间的转换 excel的列编号是这样的&#xff1a;a b c … z aa ab ac… az ba bb bc…yz za zb zc …zz aaa aab aac…; 分别代表以下的编号1 2 3 … 26 27 28 29… 52 53 54 55… 676 677 678 679 … 702 703 704 705;…...