nginx反向代理与负载均衡

负载均衡依靠反向代理实现。nginx的代理分为七层代理与四层代理:

        七层代理:七层代理的就是http请求和响应。七层代理是最常用的反向代理方式,只能配置在nginx配置文件的http模块。而且配置方法名称:upstream模块,不能写在server重,也不能在location重,在http模块中是一个独立的配置。七层代理:七层代理的就是http请求和响应。

                过程:客户端----http请求----七层代理(代理服务器上)----代理服务器转发http请求到内部的一组服务器(web集群)----客户端不知道请求的是代理服务器还是内部服务器,而且通过代理服务器隐藏了内部服务器ip。

                客户机实际上访问的是代理服务器,请求到代理,代理转发给web服务器。Web服务器响应。

        四层代理:基于tcp/ip协议层的代理转发方式。可以基于ip地址和端口进行负载均衡转发。四层代理无法获取http请求中的url信息,只能对tcp/udp数据包进行流量转发。Stream,stream不能配置在http模块中,只能配置在全局中。是一个独立的模块。

四层代理与七层代理区别:

        1,七层走的是http请求,四层走的tcp/udo数据包,转发的是流量。

                七层代理,http请求,可以对请求进行深入的解析和处理。流量控制,内容过滤。四层代理不能进行流量控制,也没办法对内容进行过滤。四层代理适用于需要处理大量连接请求的场景。七层要求对请求进行精确处理和控制的场景。实际工作中,四层和七层可以配合使用。

        2,四层代理速度比七层代理速度快:

                四层:

                1,四层只是流量转发,不能对请求进行解析和控制

                2,四层代理走到是内核,内核转发流量。

                七层:

                1,七层需要对请求进行处理和解析,速度会比较慢

                2,七层走的是用户态,访问控制,流量处理。

七层代理可以提供更高级的服务和更高的用户体验。

正向代理:proxy_pass配置代理服务器访问的地址,只能写在location模块中。

反向代理:客户端访问代理服务器,代理服务器转发请求或者流量到后端服务器,后端的web服务器会有多台,用户并不知道最终访问的是哪一台。

负载均衡:高可用,可扩展,提高维护性。

反向代理的实现:

Upstream:基于http实现负载均衡,反向代理。

        特点:

                1,http请求的负载均衡方式

                2,没有缓存

                3,负载均衡的算法

        1,默认算法:轮询 rr 请求轮流分配给后端服务器,适用于web服务器处理能力相近的情况,默认算法可以不加。

upstream kuai {server 192.168.48.16;server 192.168.48.14;
}

        2,加权轮询:建立在轮询算法上,根据不同的web服务器权重,让处理能力更强的服务器可以分配到更多的请求。虽然配置了权重值,但是轮询的结果未必准确。

upstream kuai {server 192.168.48.16 weight=2;server 192.168.48.14 weight=3;
}

        3,最小连接数:least_conn:会轮询,请求发送给当前连接数最少的后端web服务器。适用于后端服务器处理任务耗时不同的情况,避免了所有请求集中在处理能力更强的后端服务器上。会和加权轮询一起使用。

upstream kuai {least_conn;server 192.168.48.16;server 192.168.48.14;
}

        4,ip_hash:根据ip地址计算出一个哈希值,根据ip_hash算法,同一个客户端的请求会被分配到同一个后端服务器,保证会话的稳定性。后端服务器数量发生变化,哈希值会重新计算,请求的服务器也会发生变化。

upstream kuai {ip_hash;server 192.168.48.16;server 192.168.48.14;
}

        5,url_hash:根据uri地址计算哈希值,使用url_hash会把相同请求的uri会分配到同一个后端web服务器。

upstream kuai {hash $request_uri consistent;server 192.168.48.16;server 192.168.48.14;
}

        6,fair:根据流量大小,请求次数智能化转发,需要硬件支持。

使用场景:

小场景:并发量很小,默认算法就可以满足适应条件。后端web服务器的处理能力有差异:加权轮询,和最小链接数配合使用。

大型并发: ip_hash ,url_hash。第一次请求之后,会有本地缓存,而且因为hash算法的原因,请求的后台web服务器不会发生变化,可以提噶访问速度,访问的是缓存。减轻了后台服务器的请求压力。

        Ip_hash,后端web服务器数量发生变化,请求的服务器也会发生变化。

        Url_hash,请求的地址发生变化,请求的服务器也可能发生变化。

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

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

相关文章

提升效率!Go语言开发者不可错过的必备工具集合!

🌷🍁 博主猫头虎 带您 Go to Golang Language.✨✨🍁 🦄 博客首页——猫头虎的博客🎐 🐳《面试题大全专栏》 文章图文并茂🦕生动形象🦖简单易学!欢迎大家来踩踩~&#x1…

UDP数据报网络编程(实现简单的回显服务器,客户端)

回显服务器表示客户端发的是啥,服务器就返回啥,主要是为了熟悉UDP数据报网络编程的基本步骤 对于程序的所有分析都写到了代码上 UDP回显服务器代码 package UdpEcho;import java.io.IOException; import java.net.DatagramPacket; import java.net.Dat…

ClickHouse查看执行计划(EXPLAIN语法)

1.EXPLAIN 语法示例 EXPLAIN [AST | SYNTAX | QUERY TREE | PLAN | PIPELINE | ESTIMATE | TABLE OVERRIDE] [setting value, ...] [ SELECT ... | tableFunction(...) [COLUMNS (...)] [ORDER BY ...] [PARTITION BY ...] [PRIMARY KEY] [SAMPLE BY ...] [T…

途乐证券-最准确的KDJ改良指标?

KDJ目标是技术剖析的一种重要目标之一,它是利用随机目标(%R)发展而来的,是一种反映商场超买和超卖状况的买卖目标。KDJ目标由快线(K线)、慢线(D线)和随机值(J线&#xff…

RestTemplate HTTPS请求忽略SSL证书

问题描述 使用RestTemplate发送HTTPS请求的时候,出现了这样的一个问题: sun.security.validator.ValidatorException: PKIX path building failed: sun.security.provider.certpath.SunCertPathBuilderException: unable to find valid certification …

MySQL多表查询

1.创建student和score表 创建score表 2.为student表和score表增加记录 向student表插入记录的INSERT语句如下: 向score表插入记录的INSERT语句如下: 1.查询student表的所有记录 2.查询student表的第2条到4条记录 3.从student表查询所有学生的学号&#…

2023最新影视泛目录系统,苹果cms最新下载地址

影视泛目录系统是指一种集成了电影、电视剧、综艺节目、动漫等多种影视资源资源的系统,其目的是为用户提供一个方便快捷的影视资源检索、浏览、分享、评论的平台。该系统通过对影视资源进行分类、标签化、评分等方式,为用户提供更加精准的检索和推荐服务…

C#多线程学习 生产者和消费者

前面说过,每个线程都有自己的资源,但是代码区是共享的,即每个线程都可以执行相同的函数。这可能带来的问题就是几个线程同时执行一个函数,导致数据的混乱,产生不可预料的结果,因此我们必须避免这种情况的发…

mousedown拖拽功能(vue3+ts)

因为项目有rem适配,使用第三方插件无法处理适配问题,所有只能自己写拖拽功能了 拖拽一般都会想到按下,移动,放开,但是本人亲测,就在div绑定一个按下事件就行了(在事件里面写另外两个事件&#x…

爬虫ip池越大越好吗?

作为一名资深的程序员,今天我要给大家分享一些关于爬虫ip池的知识。关于ip代理池的问题,答案是肯定的,池子越大越好。下面跟我一起来盘点一下ip池大的好处吧! 1、提高稳定性 爬虫ip池越大,意味着拥有更多可用的爬虫ip…

「C/C++」C/C++搭建程序框架

✨博客主页何曾参静谧的博客📌文章专栏「C/C」C/C程序设计📚全部专栏「UG/NX」NX二次开发「UG/NX」BlockUI集合「VS」Visual Studio「QT」QT5程序设计「C/C」C/C程序设计「Win」Windows程序设计「DSA」数据结构与算法「File」数据文件格式 目录 1. 分离职…

Flume原理剖析

一、介绍 Flume是一个高可用、高可靠,分布式的海量日志采集、聚合和传输的系统。Flume支持在日志系统中定制各类数据发送方,用于收集数据;同时,Flume提供对数据进行简单处理,并写到各种数据接受方(可定制&…

使用阿里云服务器搭建Discuz论坛网站教程基于CentOS系统

阿里云百科分享使用阿里云服务器建站教程,本文是搭建Discuz论坛,Discuz!是一款通用的社区论坛软件系统,它采用PHP和MySQL组合的基础架构,为您提供高效的论坛解决方案。本文介绍如何在CentOS 7操作系统的ECS实例上搭建Discuz! X3.4…

Nginx 安装与部署

文章和代码已经归档至【Github仓库:https://github.com/timerring/front-end-tutorial 】或者公众号【AIShareLab】回复 nginx 也可获取。 文章目录 虚拟机安装CentOS7.4Linux配置配置上网配置静态ip Nginx的安装版本区别备份克隆 安装编译安装报错解决 启动Nginx防…

topo 成绩排名

题目描述 每到考试后,学校都会发成绩表给每个学生,但是很多同学更关心的是自己在班级里的排名,可惜排名信息并没有公开。 小雯同学很想知道这次期末考试的全班排名情况,但是她的同学却不愿意告诉她自己的分数,只告诉她…

分布式 - 消息队列Kafka:Kafka生产者发送消息的方式

文章目录 1. Kafka 生产者2. kafaka 命令行操作3. kafka 生产者发送消息流程4. Kafka 生产者的创建5. Kafka 生产者发送消息1. 发送即忘记2. 同步发送3. 异步发送 6. Kafka 消息对象 ProducerRecord 1. Kafka 生产者 不管是把Kafka作为消息队列、消息总线还是数据存储平台&…

wpf控件上移下移,调整子集控件显示顺序

页面代码: <!-- 导出A2,自定义导出设置列,添加时间:2023-8-9 14:14:18,作者:whl; --><Window x:Class="WpfSnqkGasAnalysis.WindowGasExportA2"xmlns="http://schemas.microsoft.com/winfx/2006/xaml/presentation"xmlns:x="http:/…

git远程仓库的创建及使用

1.仓库的概念&#xff1a; 1.1 本地仓库&#xff1a; 了解远程仓库前我们先了解一下本地仓库&#xff0c;本地仓库开发人员在完成部分代码的编写之后&#xff0c;可以将这一部分的代码做一个提交。这个提交完全就是一个新的版本提交&#xff0c;当然这个提交动作是在开发者的电…

CSS革命:用Sass/SCSS引领前端创新

目录 前言SCSSSassSass 和 SCSS 的区别 前言 在现代的前端开发中&#xff0c;CSS已成为呈现网页和应用程序样式的核心。然而&#xff0c;原生的CSS语法在大型项目中可能变得混乱、冗长且难以维护。 为了解决这些问题&#xff0c;SCSS&#xff08;Sass CSS&#xff09;和Sass&am…

Java基础篇--数组

目录 声明和初始化数组&#xff1a; 访问和修改数组元素&#xff1a; 数组长度&#xff1a; 遍历数组&#xff1a; 多维数组的遍历&#xff1a; 数组的常见操作和方法&#xff1a; 拓展小知识&#xff1a; 数组是Java中的一种数据结构&#xff0c;用于存储相同类型的多个…