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

news2024/12/23 23:38:13

一、nginx的两种代理方式

1、七层代理(http协议)

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

二、四层代理和七层代理

(一)四层代理:基于tcp/udp协议的ip和端口转发数据包

1、四层代理无法获取http请求中的url信息,只能对tcp/udp的数据包进行转发,对请求没有任何操作和处理

(二)七层代理:代理的是http的请求和响应

1、客户端请求代理服务器,由代理服务器转达客户端的http请求,转发到后端的服务器(可以是单台、或一组)

2、后端的web server再把响应送到代理服务器,最后再到客户

(三)四层代理和七层代理的区别(重点)

1、七层代理

(1)七层代理走的是用户态,需要对http的请求进行处理和解析,解析过程中,可以根据请求头和请求体的内容进行流量控制、内容过滤

(2)七层代理转发速度比较慢,但是提供的功能更高级,用户的体验更好

(3)七层代理可以对IP和端口进行转发,也可以对域名进行代理

2、四层代理

(1)四层代理走的是内核,是基于IP和端口号,只负责将流量(IP和端口)转发到后端服务器,不对请求做任何处理,只是负责转发

(2)四层代理速度较快,但无法提供更高级的功能,只是转发

(3)四层代理只能对IP和端口进行转发

3、选择场景

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

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

4、模块

(1)七层代理的模块:只能写在http模块的全局配置中(upstream)

①upstream:用于处理http请求,支持反向代理、负载均衡,缓存功能

②在upstream模块中可以配置多个服务器

(2)四层代理的模块:只能写在全局模块当中的单独配置(stream)

①stream代理是无谓协议,只管流量

(四)四层代理和七层代理的配置

1、四层代理的配置:只能写在全局配置当中(stream)

stream  {

   upstream test {

   server 20.0.0.12;

   server 20.0.0.14;

#默认轮询

#加权轮询

#最小连接数

}

server {

listen  80;

proxy_pass http://test

}

}

2、七层代理的配置

(1)正向代理

location {

proxy_pass http://20.0.0.12;

}

(2)反向代理

①在http的全局配置中定义upstream模块、负载均衡的算法配置在upstream模块中

upstream yyy {

least_conn;

ip_hash;

url_hash;

server 20.0.0.12 weight;

server 20.0.0.13 weight;

}

②在server块的location中,指定代理服务器的方法

location {

proxy_pass http://yyy;

}

三、正向代理和反向代理

(一)正向代理

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

2、客户端也是访问代理服务器,代理服务器转发请求,客户端只代理服务器的地址,而后端的web server的IP地址客户端也不知道

(二)反向代理

1、代理服务器转发http请求,但是客户端不知道访问的是哪一台服务器

2、都是通过代理服务器访问,一个代理服务器会有多台后端服务器供代理服务器进行转发请求,一对多

3、只有一对多才涉及负载均衡的算法问题

(三)正向代理的配置方法(类似vpn、加速器)

nginx1作为客户端、nginx2和nginx3作为代理服务器

通过20.0.0.11直接访问20.0.0.12

(四)反向代理的配置:客户端通过代理服务器访问,但后端有多台(企业架构都是反向代理)

四、负载均衡算法

(一)rr(round robin):轮询(负载均衡最简单的算法)

1、含义:请求轮流分配到后端服务器,是默认算法,可以不加

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

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

(二)加权轮询:weight(建立在默认轮询算法之上)

1、含义:为后端服务器设置不同的权重,通过权重分发客户端的请求

2、特点:

(1)处理能力强的服务器可以分配的权重值要高一些

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

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

3、适用场景:中大型网站可以使用加权轮询

(三)最小连接数算法:会把请求发送到连接数量较小的后端服务器(least_conn)

1、特点:

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

2、适用场景:中型网站、大型网站,日常访问可以满足

(四)ip_hash

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

2、特点:

(1)ip_hash第一次访问之后,后续的访问是有缓存的

(2)如果后端服务器的数量发生变化,可能会进行重新分配,请求的后端服务器可能会发生变化(后端服务器数量变少一定会变化;后端服务器的数量增加,请求的地址未必发生变化)

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

3、适用场景:ip_hash适用于高并发,请求不会跳转,请求的是缓存(用于:把请求的客户端地址,转发到固定的服务器)

(五)url_hash:

1、含义:根据请求的url地址计算hash值,然后将请求发送到相应的后端服务器。相同的url地址请求会被分配到相同的服务器

2、特点:

(1)url_hash访问之后,后续都是访问缓存,可以降低后端服务器的压力

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

3、适用场景:url_hash和ip_hash可以结合在一起使用,可以适用于并发较高的场景

五、基于域名的反向代理

nginx1作为客户端、nginx2和nginx3作为代理服务器

(一)客户端配置

(二)代理服务器配置

六、配置四层的反向代理(全局模块中配置;基于ip和端口)

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

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

2、但是ip_hash和url_hash这两种算法不可以在stream中使用,只有http协议可以请求和处理,四层不能对请求进行任何处理,只是转发数据包。因此、只有http七层代理可以处理请求地址和请求的url

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

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

相关文章

[Linux 基础] Linux编辑器Vim,你值得拥有

文章目录 1、Linux 软件包管理器 yum1.1 什么是软件包1.2 如何安装软件1.3 如何卸载软件 2、vim的使用2.1 vim的安装和配置2.2 vim的基本概念2.3 vim的基本操作 3、vim正常模式命令集4、vim注释与去注释5、Liunx编辑器-gcc/g使用5.1 如何使用gcc编译c程序5.2 gcc的翻译过程5.2.…

excel管理接口测试用例

闲话休扯,上需求:自动读取、执行excel里面的接口测试用例,测试完成后,返回错误结果并发送邮件通知。 分析: 1、设计excel表格 2、读取excel表格 3、拼接url,发送请求 4、汇总错误结果、发送邮件 开始实现…

字节跳动2023测试开发岗 3+1 面经+经验分享(收到offer,入职月薪27K)

现在,招聘黄金时间已经来临,在网上看了很多大佬的面经,也加了很多交流群,受到了很多朋友的提点,今天终于轮到我来分享面经啦,之前面试了几家公司,最后在十月初拿到了字节跳动测试岗的 offer&…

竞赛选题 深度学习YOLO图像视频足球和人体检测 - python opencv

文章目录 0 前言1 课题背景2 实现效果3 卷积神经网络4 Yolov5算法5 数据集6 最后 0 前言 🔥 优质竞赛项目系列,今天要分享的是 🚩 深度学习YOLO图像视频足球和人体检测 该项目较为新颖,适合作为竞赛课题方向,学长非…

ArcGIS在VUE框架中的构建思想

项目快要上线了,出乎意料的有些空闲时间。想着就把其他公司开发的一期代码里面,把关于地图方面的代码给优化一下。试运行的时候,客户说控制台有很多飘红的报错,他们很在意,虽然很不情愿,但能改的就给改了吧…

git 创建并配置 GitHub 连接密钥

前记: git svn sourcetree gitee github gitlab gitblit gitbucket gitolite gogs 版本控制 | 仓库管理 ---- 系列工程笔记. Platform:Windows 10 Git version:git version 2.32.0.windows.1 Function: git 创建并配置 GitHub…

照片全屏水印轻松去除,让你的照片焕然一新

当需要处理带有全屏水印的照片时,想要去除照片全屏水印往往是一个让人感到棘手的问题,然而幸运的是现在有一些非常出色的一键去水印工具可供选择。这些工具操作简单易用,处理速度快,去除水印的效果也非常令人满意,基本…

如何进行开关电源能效(效率)测试?纳米软件电源测试系统如何助力?

开关电源在实际工作中输入与输出转换是有一定的能量损耗的,并不会完全无损耗转换,电源效率就是用来衡量能量转换损耗的一个重要指标。那么开关电源效率要如何测试呢? 电源效率是指输出功率与输入功率之比,计算公式如下: ​​​​…

阿里云服务器ECS实例规格族字母命名说明

阿里云服务器ECS实例命名规则&#xff1a;ecs.<规格族>.large字母含义命名说明&#xff0c;包括x86、ARM架构、GPU异构计算、弹性裸金属、超级计算集群SCC云服务器&#xff0c;c代表计算型、g代表通用型、r代表内存型、u代表通用算力型、e代表经济型e实例&#xff0c;阿里…

一键搞定!黑群晖虚拟机+内网穿透实现校园公网访问攻略!

文章目录 前言本教程解决的问题是&#xff1a;按照本教程方法操作后&#xff0c;达到的效果是前排提醒&#xff1a; 1. 搭建群晖虚拟机1.1 下载黑群晖文件vmvare虚拟机安装包1.2 安装VMware虚拟机&#xff1a;1.3 解压黑群晖虚拟机文件1.4 虚拟机初始化1.5 没有搜索到黑群晖的解…

成集云 | 人货客数据分析系统集成ERP | 解决方案

方案介绍 用友T是一款由用友畅捷通推出的新型互联网企业管理系统&#xff0c;它主要满足成长型小微企业对其灵活业务流程的管控需求&#xff0c;并重点解决往来业务管理、订单跟踪、资金、库存等管理难题。 成销云-人货客数据分析系统是一种针对零售、电商等行业的客户数据分…

使用EMD分解进行去噪

EMD分解去噪 对于掺杂噪声的原始信号&#xff0c;可以使用EMD分解&#xff0c;去除高频的IMF达到去噪效果。 验证代码 测试的IMF由c代码产生&#xff0c;具体链接可见C仿写emd分解代码 %% clear all; clc;%% raw load(result_VS\test.txt); imfs load(result_VS\imfs.txt…

2023年【制冷与空调设备运行操作】考试资料及制冷与空调设备运行操作考试试卷

题库来源&#xff1a;安全生产模拟考试一点通公众号小程序 2023年制冷与空调设备运行操作考试资料为正在备考制冷与空调设备运行操作操作证的学员准备的理论考试专题&#xff0c;每个月更新的制冷与空调设备运行操作考试试卷祝您顺利通过制冷与空调设备运行操作考试。 1、【单…

外汇天眼:群雄聚首,盈在世界!外汇模拟周赛火热进行中

你是否是新手幻想过在交易场上游刃有余&#xff1f;是否是资深玩家想在汇市一展身手&#xff1f;是否想成为像巴菲特那样叱咤风云的交易大神&#xff1f;现在机会来了&#xff01; 只要下载外汇天眼APP&#xff0c;参与外汇模拟比赛&#xff0c;就能与高手对决&#xff01;来一…

使用Apache和内网穿透实现私有服务公网远程访问——“cpolar内网穿透”

文章目录 前言1.Apache服务安装配置1.1 进入官网下载安装包1.2 Apache服务配置 2.安装cpolar内网穿透2.1 注册cpolar账号2.2 下载cpolar客户端 3. 获取远程桌面公网地址3.1 登录cpolar web ui管理界面3.2 创建公网地址 4. 固定公网地址 前言 Apache作为全球使用较高的Web服务器…

Android串口开发之使用JNI实现ANDROID和串口通信

导语&#xff1a;Android串口通信在物联网、智能家居等领域具有广泛的应用。本文将详细介绍如何使用JNI技术实现Android设备与串口的通信&#xff0c;包括串口的打开、设置参数和读写数据等过程。 目录 一、背景知识二、环境准备三、创建Android串口项目四、串口通信相关代码实…

Android7.1 新增开机广播过滤(只有特定apk可以接收开机广播)

一、需求 对开机广播进行过滤&#xff0c;只有特定的apk才能接收开机广播&#xff08;包名白名单、或者包名前缀匹配&#xff09;。 二、需要修改的地方 对于广播的过滤&#xff0c;在frameworks/base/services/core/java/com/android/server/am/BroadcastQueue.java这个文件…

RCNN系列网络的理解

R-CNN 作者 &#xff1a; Ross Girshick FAST R-CNN 作者 &#xff1a; Ross Girshick FASTER R-CNN 作者 &#xff1a; Jian Sun MASK R-CNN 作者 &#xff1a;kaiming he 一…

第四章 输入输出 Pro

四、输入输出 1、字符输入输出函数 一、字符输出函数 一般形式 putchar() 二、字符输入函数 一般形式 cgetchar() 无参数 三、说明&#xff1a; (1)getchar&#xff08;)只能接受一个字符&#xff0c;以回车结束&#xff1b; (2)连续输入多个字符时&#xff0c;中间不用空格…

超微收购Nod.ai 提升开源AI软件实力 | 百能云芯

超微半导体AMD日前宣布签署最终协议以收购Nod.ai&#xff0c;拓展其在开源AI软件的实力。收购Nod.ai将带来经验丰富的团队&#xff0c;该团队开发领先业界的软件技术&#xff0c;能够加快为AMD Instinct资料中心加速器、Ryzen AI处理器、EPYC处理器、Versal系统单晶片&#xff…