nginx正向代理、反向代理、负载均衡(重中之重)

nginx中有两种代理方式:

七层代理(http协议)

四层代理(基于tcp或udp的流量转发)

一、七层代理

原理:客户端请求代理服务器,由代理服务器转发客户端的http请求,转发到内部的服务器。(服务器是单台或一组)。后台的web server再把响应送达代理服务器,最后到达客户端

反向代理——客户端不知道访问的是哪台web服务器,具体访问哪台是由负载算法决定的

正向代理——客户端知道访问的是哪台web服务器

二、四层代理:

基于tcp /ip协议层的转发代理方式。基于ip和端口号实现负载均衡或正向代理。四层代理无法获取http请求中的URL信息,只能对tcp/udp的数据包进行转发

(重点)四层代理和七层代理之间的区别:

1、七层代理走的是用户态,需对http的请求进行处理和解析,解析过程中可以根据请求头和请求体的内容进行一定的操作(流量控制、内容过滤等)。转发速度比较慢,但提供的功能更高级,用户体验更好——市面上常用

2、四层代理基于ip地址和端口号,只负责将ip转发到后端服务器,不对请求做任何处理,只负责转发,且四层转发走的是内核态,七层代理需校验,所以四层转发速度较快。四层代理无法提供更高级的功能,只是转发

3、选择场景:

七层代理:需要对http请求进行控制和处理,只能选择七层代理

四层代理:只转发tcp或udp数据包,选择四层或七层均可

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

四层只能对ip和端口进行转发

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

4、模块:

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

配置命令:upstream

upstream模块用于处理http请求,支持反向代理,负载均衡,缓存功能。在upstream模块中可以配置多个服务器

四层代理只能写在全局模块中的单独配置

配置命令:stream模块

四层的反向代理:

三、(面试题)负载均衡算法

1、rr(round robin)——轮询(负载均衡最简单的算法)(不用)

原理:请求轮流分配到后端服务器。默认算法,可以不加

每发起一次都是新的请求,在服务器上没有缓存

2、weight——加权轮询(常用)

weight=2;

建立在轮询算法基础上的

原理:为后端服务器分配不同的权重,处理能力强的服务器可以分配的权重值要高一些。轮询次数基本上按照权重进行分配的。服务器上也没有缓存

权重高的服务器会被频繁的请求响应,权重低的可能闲置,会和另一种算法配合使用(最少连接数算法)

3最少连接数算法

least_conn;

原理:把请求发送到连接数量较少的后端服务器

可以单独使用此算法,但一般结合加权轮询一起使用,避免所有的请求都发送到处理能力强的服务器,可以提高整个集群的稳定性

适用于中型网站,大型网站的日常访问也满足

4ip_hash算法

ip_hash;

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

特点:①ip_hash第一次访问之后,后续访问有缓存

②如果后端服务器的数量改变,可能会重新分配服务器

③请求不会跳转,请求的是缓存——减轻服务器压力

5、url_hash算法

hash $request_uri consistent;

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

特点:一般url_hash和ip_hash结合在一起使用。适用于并发较高的场景。主要是ip_hash和ip_hash访问之后,后续访问都是访问缓存,可以减轻后端服务器的压力

四、实验

(1)基于IP地址七层正向代理实验

vim /usr/local/nginx/conf/nginx.conf

vim /usr/local/nginx/html/index.html

测试

(2)基于IP地址七层反向代理实验

实验条件:nginx1——客户端——20.0.0.11

nginx2——服务端1——20.0.0.21

nginx3——服务端2——20.0.0.31

nginx4——服务端3——20.0.0.41

实验步骤:

1、nginx1

2、nginx2

3、nginx3

4、nginx4

5、测试

结论:默认轮询算法。轮流分配到每个后端服务器

6、结合负载均衡算法

结论:按照算法规则分配后端服务器。注意:同一ip地址请求,ip_hash和url_hash算法会有缓存,分到到同一后端服务器

(3)基于域名的七层反向代理实验

1、nginx1

ngin2

nginx3

nginx4

测试

(4)四层反向代理实验

nginx1

nginx -t出现“ unknown directive stream”错误。

原因:在编译安装nginx时没有安装stream模块,nginx -t 无法识别stream

解决思路:在nginx源码包目录下重新配置./configure --with-stream并且make && make install

2、nginx2

3、nginx3

4、nginx4

5、测试

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.rhkb.cn/news/161400.html

如若内容造成侵权/违法违规/事实不符,请联系长河编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

YAPI介绍及Docker Compose部署指南

我们团队的项目最初前后端是同一个开发人员在做,因此并不存在提供详细接口文档等问题。随着项目的不断迭代,团队规模逐渐扩大,我们决定将前后端分开,专门由专业的前端和后端人员进行开发工作。然而,这样的改变也带来了…

Systrace学习笔记

Systrace学习笔记 1.Systrace快捷键2.线程状态3.CPU info4.图形化4.1 Frames帧4.2 用户活动4.3 CPU活动4.4 系统事件 5. SystemServer5.1 SystemServer简介5.2 窗口动画5.3 AMS(ActivityManagerService)5.4 WMS(WindowMagerService)5.5 ServiceThread5.6 HandlerThread 6. Surf…

OpenAI开放gpt-3.5turbo微调fine-tuning测试教程

文章目录 openai微调 fine-tuning介绍openai微调地址jsonl格式数据集准备点击上传文件 openai微调 fine-tuning介绍 openai微调地址 网址:https://platform.openai.com/finetune jsonl格式数据集准备 使用Chinese-medical-dialogue-data数据集git clone进行下载 …

Puppeteer记录操作过程及优秀的开源插件(五)

Puppeteer记录操作过程及优秀的开源插件(五) Puppeteer记录操作过程及优秀的开源插件(五)一、简介二、自动生成测试代码三、优秀的开源插件四、参考案例 一、简介 本节我们将介绍通过浏览器工具记录用户的实际操作,并…

Java基础之接口(interface)详解

对Java核心技术卷的一个简单笔记 目录 前言1.接口的概念2.接口的声明格式3.接口的属性4.接口和抽象类的区别5.继承和接口混合使用的一些规则6.继承父类和实现接口时的一些同名冲突问题6.1方法名冲突6 .2常量名冲突 前言 总结一下基础阶段接口常见的问题 1.接口的概念 接口 &…

F. Minimum Maximum Distance Codeforces Round 903 (Div. 3)

Problem - F - Codeforces 题目大意&#xff1a;有一棵n个点的树&#xff0c;其中有k个标记点&#xff0c;令点i到所有标记点的最远距离为fi&#xff0c;问所有点中fi的最小值是多少 1<k<n<2e5 思路&#xff1a;我们首先考虑取得最小值的点在哪&#xff0c;我们假设…

Unity教程 ECS 内存分配器原理详解

一、UnityECS内存分配器的作用 在传统的面向对象编程模式中&#xff0c;我们通常使用堆内存来存储实体和组件数据。然而&#xff0c;由于实体和组件数据的规模通常非常庞大&#xff0c;使用堆内存进行分配和管理会导致内存碎片化和性能下降的问题。为了解决这个问题&#xff0…

常见的数据结构及应用

文章目录 前言数据结构介绍数组链表队列和栈树堆 总结 前言 数据结构是计算机存储、组织数据的方式。在工作中&#xff0c;我们通常会直接使用已经封装好的集合API&#xff0c;这样可以更高效地完成任务。但是作为一名程序员&#xff0c;掌握数据结构是非常重要的&#xff0c;…

MySQL——六、库表操作(下篇)

MySQL 一、INSERT语句二、REPLACE语句三、UPDATE语句四、delete和TRUNCATE语句五、MySQL用户授权1、密码策略2、用户授权和撤销授权 一、INSERT语句 #在表里面插入数据&#xff1a;默认情况下&#xff0c;一次插入操作只插入一行 方式1&#xff1a; INSERT [INTO] 表名 [(colu…

新一代开源语音库CoQui TTS冲到了GitHub 20.5k Star

Coqui TTS 项目介绍 Coqui 文本转语音&#xff08;Text-to-Speech&#xff0c;TTS&#xff09;是新一代基于深度学习的低资源零样本文本转语音模型&#xff0c;具有合成多种语言语音的能力。该模型能够利用共同学习技术&#xff0c;从各语言的训练资料集转换知识&#xff0c;来…

vue2 解密图片地址(url)-使用blob文件-打开png格式图片

一、背景 开发中需要对加密文件进行解码&#xff0c;如图片等静态资源。 根据后端给到的url地址&#xff0c;返回的是图片文件&#xff0c;但是乱码的&#xff0c;需要解码成png图片进行展示 二、请求接口 将后端返回的文件转为文件流&#xff0c;创建Blob对象来存储二进制…

设计模式:工厂方法模式(C#、JAVA、JavaScript、C++、Python、Go、PHP):

本节主要介绍设计模式中的工厂方法模式。 简介&#xff1a; 工厂方法模式&#xff0c;它是对简单工厂模式的进一步抽象化&#xff0c;其好处是可以使系统在不修改原来代码的情况下引进新的产品&#xff0c;即满足开闭原则。 它定义了一个用于创建对象的工厂接口&#xff0c;让…

游游的字母串 (环形数组两点之间的位置)

题目链接&#xff1a;登录—专业IT笔试面试备考平台_牛客网 题目&#xff1a; 样例&#xff1a; 输入 yab 输出 3 思路&#xff1a; 暴力枚举&#xff0c;全部变成对应的26个字母字符需要的操作步数&#xff0c;取最少的一个操作步数&#xff0c; 这里的操作步数&#xff0…

laravel中锁以及事务的简单使用

一、首先来说一下什么是共享锁&#xff1f;什么是排他锁&#xff1f; 共享&#xff1a;我可以读 写 加锁 , 别人可以 读 加锁。 排他&#xff1a;只有我 才 可以 读 写 加锁 , 也就是说&#xff0c;必须要等我提交事务&#xff0c;其他的才可以操作。 二、简单例子实现加锁 锁…

tomcat 服务器

tomcat 服务器 tomcat: 是一个开源的web应用服务器。区别nginx&#xff0c;nginx主要处理静态页面&#xff0c;那么动态请求&#xff08;连接数据库&#xff0c;动态页面&#xff09;并不是nginx的长处&#xff0c;动态的请求会交给tomcat进行处理。 nginx-----转发动态请求-…

PCL 坡度滤波算法地面分割(C++详细过程版)

目录 一、算法原理1、实现流程2、参考文献二、代码实现三、结果展示一、算法原理 1、实现流程 1、格网示意图 2、计算格网行列数 公式中的特殊符号为向上取整,

Cesium Vue(三)— 相机配置

1. 坐标系转换 1.1 cesium使用到的坐标系 屏幕坐标系&#xff0c;二维的笛卡尔坐标系&#xff0c;API > Cartesian2地理空间坐标系&#xff0c;WGS-84坐标系&#xff0c; API > Cartographic(经度&#xff0c;维度&#xff0c;高度)三维笛卡尔空间直角坐标系&#xff0…

GPT4 Advanced data analysis Code Interpreter 做行业数据分析、可视化处理图像、视频、音频等

1. 跨境电商如何用ChatGPT选品 ChatGPT Jungle scout 案例&#xff1a;跨境电商如何用ChatGFT选品 ChatGPTJungle scout 素材和资料来自&#xff1a; Jungle ScoutEM, Michael Soltis 和 文韬武韬AIGC 1.1 从Jungle scout上下载数据 Date Range > Last 90 days Downlo…

python+大数据校园卡数据分析 计算机竞赛

0 前言 &#x1f525; 优质竞赛项目系列&#xff0c;今天要分享的是 &#x1f6a9; 基于yolov5的深度学习车牌识别系统实现 &#x1f947;学长这里给一个题目综合评分(每项满分5分) 难度系数&#xff1a;4分工作量&#xff1a;4分创新点&#xff1a;3分 该项目较为新颖&am…

Stable Diffusion绘画,卡通,教室

1 girl, parted lips, blush, makeup, light smile, school uniform, classroom, light rays, glow, thighs, collarbone, narrow waist, (masterpiece), wallpaper 1个女孩&#xff0c;双唇&#xff0c;腮红&#xff0c;化妆&#xff0c;浅笑&#xff0c;校服&#xff0c;教室…