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

news2025/3/15 4:22:10

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.coloradmin.cn/o/1103787.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

手写一个PrattParser基本运算解析器2: PrattParser概述

点击查看 基于Swift的PrattParser项目 解析器概述 由于编译原理内容太过于枯燥, 所以当时我就在想能不能写一个编译过程, 这时候就在B站上看到了熊爷的技术去魅篇 - PrattParser解析器. 解析器主要的工作是把一系列的标记转换为树的表示形式. 例如线性代码 a 1 1 * 3 的转换…

React 路由学习总结 react-router-dom6+react-router-dom5

开题 单页面应用和多页面应用 SPA:单页面应用程序,整个应用中只有一个页面(index.html) MPA:多页面应用程序,整个应用中有很多页面(*.html) react路由 现在的前端应用大多都是SPA单页面应用程序,也就是一个HTML页面的…

Compose Material3 新增垂直分隔符(VerticalDivider)解析与疑惑

前言 谷歌在 7 月 28 日发布了 Compose Material3 1.2.0-alpha04 版本,在该版本新增(修改)了两个组件,垂直分隔符和分段按钮: Experimental Segmented Button API. Dividers now have a parameter to control orienta…

TwinCAT3 ADS与C++通讯

文章目录 一 ADS简介1.1 ADS通讯定义1.2 ADS通讯实现 二 上位机程序编写(Visual Studio 2019)2.1 启动VS2019,新建MFC项目2.2 添加ADS通讯链接库2.3 在程序中引入头文件 一 ADS简介 1.1 ADS通讯定义 ADS(Advanced Design System&#xff09…

从0开始编写BP,自适应学习率的BP神经网络,不使用MATLAB工具箱,纯手写matlab代码,以BP分类为例...

与上篇文章不同,仔细读了上篇文章的小伙伴应该知道,BP神经网络是有一个学习率的,而这个学习率很大程度上决定着神经网络的效果。这里采用自适应学习率,实现纯手写BP神经网络。 编程时,激活函数选择Sigmoid函数&#xf…

【计算机毕设选题推荐】网络在线考试系统SpringBoot+SSM+Vue

前言:我是IT源码社,从事计算机开发行业数年,专注Java领域,专业提供程序设计开发、源码分享、技术指导讲解、定制和毕业设计服务 项目名 网络在线考试系统 技术栈 SpringBootSSMVueMySQLMaven 文章目录 一、网络在线考试系统-环境…

SLAM从入门到精通(dwa算法)

【 声明:版权所有,欢迎转载,请勿用于商业用途。 联系信箱:feixiaoxing 163.com】 要说搜路算法,这个大家都比较好理解。毕竟从一个地点走到另外一个地点,这个都是直觉上可以感受到的事情。但是这条道路上机…

行情分析——加密货币市场大盘走势(10.17)

大饼昨日在受到假消息美国证券交易委员会(SEC)通过大饼ETF后迅速上涨,一度上涨到30000,而很快回落到28000附近。从MACD日线来看,现在完全进入多头趋势,同时大饼再次进入蓝色上涨趋势线,目前按照…

李宏毅机器学习笔记-半监督学习

半监督学习,一般应用于少量带标签的数据(数量R)和大量未带标签数据的场景(数量U),一般来说,U>>R。 半监督学习一般可以分为2种情况,一种是transductive learning,…

使用秋云 ucharts echarts 高性能跨全端图表组件 流程

1. 2. // 引入 import qiunDataCharts from ../../uni_modules/qiun-data-charts/components/qiun-data-charts/qiun-data-charts.vue // 注册 components:{qiunDataCharts },// 页面中使用 <qiun-data-charts type"line" :opts"opts" :chartData"…

04 MIT线性代数-矩阵的LU分解 Factorization into A=LU

目的: 从矩阵的角度理解高斯消元法, 完成LU分解得到ALU 1.矩阵乘积的逆矩阵 Inverse of a product 2.矩阵乘积的转置 Transpose of a product 3.转置矩阵的逆矩阵 Inverse of a transpose 4.矩阵的LU分解 U为上三角阵(Upper triangular matrix), L为下三角阵(Lower triangular…

pycharm远程连接miniconda完整过程,以及遇到的问题解决

问题1&#xff1a;no-zero exit code(126) env: ‘/home/user2/miniconda3/envs/ihan/bin/python3’: Too many levels of symbolic links Python interpreter process exited with a non-zero exit code 126 因为选择的新建导致太多软连接&#xff0c;先在服务器上建好虚拟环…

【微信小程序】数字化会议OA系统之首页搭建(附源码)

&#x1f389;&#x1f389;欢迎来到我的CSDN主页&#xff01;&#x1f389;&#x1f389; &#x1f3c5;我是Java方文山&#xff0c;一个在CSDN分享笔记的博主。&#x1f4da;&#x1f4da; &#x1f31f;推荐给大家我的专栏《微信小程序开发实战》。&#x1f3af;&#x1f3a…

eNSP笔记①

关闭范文信息&#xff1a;undo terminal monitor VRP三种试图 "<>"表示用户视图&#xff0c;系统默认的状态。主要用于查询设备基础信息或者状态等&#xff0c;也可以执行保存(save)。 “[]” 表示系统视图&#xff0c;在用户视图下输入system-view进入状态…

Kafka序列化反序列化解析、kafka schema

Kafka序列化反序列化解析、kafka schema。 kafka有自己的rpc协议,即nio bytebuf中的数据格式,详见之前的kafka相关介绍的文章。这里我们来看一下大家常用,有时又疑惑的序列化反序列化,对应rpc协议中的records,kafka叫Serdes,实际上也是字面上的意思serialize and deseri…

Qt扫盲-QDataStream 序列化和反序列化理论

QDataStream 序列化和反序列化理论 一、概述二、QDataStream 概述三、版本控制四、读取和写入原始二进制数据五、读写Qt集合类六、读写其他Qt类七、使用读事务八、Qt支持的序列化类型 一、概述 序列化&#xff1a; 指的是将一个内存对象转化成一串字节数据&#xff08;存储在一…

FSDP(Fully Sharded Data Parallel)

完全分片数据并行 (FSDP) &#xff0c;它将AI 模型的参数分片到数据并行工作器上&#xff0c;并且可以选择将部分训练计算卸载到 CPU。顾名思义&#xff0c;FSDP 是一种数据并行训练算法。尽管参数被分片到不同的GPU&#xff0c;但每个微批次数据的计算仍然是每个 GPU Worker 本…

C++ - 一些特殊类的设计

前言 我们在日常写项目的过程当中&#xff0c;肯定会遇到各种各样的需求&#xff0c;那么也就要求我们要写各种各样的类。本篇博客当中&#xff0c;就一些常用的特殊类进行介绍和实现。 不能被拷贝的类 关于实例化类拷贝&#xff08;对象的拷贝&#xff09;一般就是两个场景&…

6.DApp-用Web3实现前端与智能合约的交互

题记 用Web3实现前端与智能合约的交互&#xff0c;以下是操作流程和代码。 准备ganache环境 文章地址&#xff1a;4.DApp-MetaMask怎么连接本地Ganache-CSDN博客 准备智能合约 文章地址&#xff1a; 2.DApp-编写和运行solidity智能合约-CSDN博客 编写index.html文件 <!…

简单测试一下 展锐的 UDX710 性能

最近在接触 联通5G CPE VN007 &#xff0c;发现使用的是 展锐的Unisoc UDX710 CPU&#xff0c;正好简单的测试一下这颗CPU CPU信息 UDX710 是一颗 双核 ARM Cortex-A55 处理器&#xff0c;主频高达 1.35GHz processor : 0 BogoMIPS : 52.00 Features : fp…