Nginx负载均衡(重点)
正向代理
部署正向代理
server {
listen 80;
server_name localhost;#charset koi8-r;
#access_log logs/host.access.log main;
location / {
root html;
index index.html index.htm;proxy_pass http://20.0.0.60:8080; #配置代理地址
}
location ~ \.(gif|jpg|jepg|png|bmp|ico)$ {
root html;
expires 1d;
web服务器:
server {
listen 8080; #改监听地址
server_name www.nginx.com;
index index.html index.htm;
root html;
#charset koi8-r;access_log logs/host.access.log main;
location ~ .*\.(jpg|gif|png)$ {
root html;
}


正向代理和反向代理的区别
正向代理:
正向代理是面向客户端的。客户端想要访问一个web服务器,但是客户端的ip被web服务器禁止访问了,
这个时候就可以通过代理服务器,客户端通过代理服务器去访问web服务器,
web服务器只会知道是代理服务器的ip访问的它,而不知道是客户端
是位于客户端和目标服务器之间的服务器,目的就是为了从目标服务器取得内容,客户端向代理发送一个请求并指定目标服务器,代理服务器和客户端处于同一个局域网内。
例如:现在有台代理服务器,我要访问百度,于是我就让代理服务器帮我转发
反向代理:
客户端直接访问代理服务器,作用就是分担服务器的负载,提高系统的可用性和稳定性。
运行方式:是代理服务器接受网络上的连接请求。它将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给网络上请求连接的客户端 。代理服务器和目标服务器处于同一个局域网内。
例如:需要访问taobao买东西,不需要知道图片上展示的东西是不是同一个服务器返回数据,是反向代理处理的,我不知道目标服务器
反向代理两种模式
配置语法
upstream 模块:upstream 模块的配置块位于 http 块内,用于配置反向代理和负载均衡的后端服务器列表,
以及相关的负载均衡算法和参数。stream 模块:stream 模块的配置块位于 stream 块内,用于配置 TCP 和 UDP 流量的代理、
负载均衡和路由规则等。upstream 模块用于处理 HTTP 流量,主要用于反向代理和负载均衡;
stream 模块用于处理 TCP 和 UDP 流量,可用于构建 TCP/UDP 代理和负载均衡器。
针对不同的流量类型提供了特定的功能和配置方式
七层反向代理
七层代理是最常用的反向代理方式,代理的是http的请求和响应,只能配置在Nginx配置文件中的http模块
而且配置的方法名称:upstream模块,不能写在server中,也不能写在loaction中,在http中是一个独立的配置
七层代理工作原理
客户端---------->http请求-------->七层代理的服务器上--------->代理服务器转发htp请求到内部的一组服务器(web集群)
(客户端不知道请求的是代理服务器的内部服务区,而且通过代理服务器隐藏了内部服务器的IP
实际上访问的是代理的服务器,请求到代理,代理转发给web服务器,web服务器响应的)
部署七层反向代理
基于七层的http/https/mail等应用协议的代理
他是在http模块里面添加以upstream模块,在upstream里面定义服务器组名称,添加ip,端口号,权重(如果不添加的话,默认是1),可以在添加一个调度算法。并在http模块里面添加server模块,在里面用location来匹配URL路径,定义proxy_pass http://服务器组名称,用来将以。。。为结尾的请求转发给tomcat服务器集群。并且后端服务器需要获取真实的客户端的ip地址。
http{
upstream 服务器组名称{
server IP1:PORT [weight=1 ...];
server IP2:PORT;
..........
调度算法(rr轮询/加权轮询,least_conn最小连接,ip_hash,url_hash,faire);
}
server {
location ~ ...{
#将以***为结尾的请求转发给tomcat服务器集群
proxy_pass http://服务器组名称;
#用于后端服务器获取真实的客户端ip地址
proxy_set_header HOST $host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
}
四层反向代理
四层代理:四层代理是基于tco/ip协议层的代理的转发方式,可以实现基于ip地址和端口进行负载均衡转发
特点:四层代理无法获取http请求当中的URL信息,只能对tcp/udp数据包进行转发(实际就是流量转发)
配置方法的名称:stream
stream 不可以配置在http模块,配置在全局模块当中,是属于一个独立的模块,不属于其他任何的模块
部署四层反向代理
基于四层的ip+tcp/upd端口的代理
他是http块同一级,一般配置在http块上面。
他是需要用到stream模块的,一般四层里面没有自带,需要编译安装一下。并在stream模块里面添加upstream +服务器名称,添加ip地址及端口号。定义server模块,里面添加listen 监听端口号,server_name 网站主机名,proxy_pass 服务器组名称。
stream{
upstream fuwu服务器名称{
server IP1:PORT;
server IP2:PORT;
server IP3:PORT;
........
}
server{
listen 监听端口;
server_name 网站主机名;
proxy_pass 服务器组名称;
}
}
四层代理和七层代理的区别(面试题)
1.七层走的是http请求 四层是tcp/udp的数据包,转发的流量
七层代理:http请求,可以对请求进行深入的解析和处理,流量控制,内容是guolv
四层代理:不可以进行流量控制,也无法对内容进行过滤
七层主要对请求进行精准的处理和控制场景
四层代理主要处理需要大量连接请求的场景
所以在工作中四层可以和七层可以配合使用
2.四层的速度比七层代理的速度快?
四层只是流量转发,不可以对请求进行解析和控制
四层代理走的是内核,内核转发的流量,所以速度快
七层代理要对请求进行处理和解析,所以速度比较慢
七层代理走的是用户态,访问控制,流量处理,所以速度比较慢
所以七层代理可以提供更高级的服务和更好的用户体验
正向代理
proxy_pass配置代理服务器访问的地址,只能写在location模块当中
反向代理
客户端访问代理服务器,代理服务器转发请求或者流量到后端服务器,后端的的web服务器会有多台,
用户并不知道最终访问的是哪一台服务器
upstream:基于http请求实现负载均衡
特点:1.http请求的负载均衡方式
2.没有缓存,所以这个时候就需要负载均衡的算法
负载均衡的算法
1.默认算法(轮询算法 rr)
轮询算法把请求轮流分配给后端服务器,轮询算法使用与web服务器处理能力相近的情况,默认算法,可以不加
2.加权轮询
建立在轮询算法的基础之上,通过给不同的web服务器不同的权重,让处理能力更强的服务器分配到更多的请求,
虽然配置的权重值,但是轮询的结果未必准确
weight:权重 配置的后端服务器权重越高,轮询的次数就会越多
3.ip_hash
根据ip地址计算哈希值,使用ip_hash算法,同一个客户端的请求会被分配到同一个后端服务器,保证会话的稳定性
但是如果后端服务器的数量发生变化,那么hash值就会被重新计算,那么请求的服务器也会发生变化
4.最少连接数 least_conn;
轮询,请求发送到当前连接数最小的web服务器,
主要适用于后端服务器耗时不同的情况,避免所有的请求集中在处理能力更强的后端服务器上,会和加权轮询配合使用
5.url_hash;
根据uri的地址计算hash值,使用url hash,相同请求的uri会分配到同一个web后端服务器
算法使用场景
小场景:并发量很小,默认算法轮询就可以满足
后端web服务器的处理能力有差异:加权轮询和最小连接数配合使用
大型并发:ip_hash url_hash.
1.第一次请求之后会有本地缓存,而且因为哈希算法的原因,请求的后台web服务器不会发生变化,可以提高访问速度,因为访问的是缓存
2.减轻了大并发引起后台服务器的请求压力
注意:ip_hash 后端web服务器数量发生变化,请求的服务器也会发生变化
url_hash 请求的地址发生变化,请求的服务器也可能会发生变化
你在工作中如何做反向代理?(面试)
反向代理就是防止大并发引起后台服务器的请求压力,所以就需要做负载均衡
即反向代理就是负载均衡
负载均衡,首先看并发量的多少,根据这个并发量指标,来确定负载均衡的算法
当并发量小的时候:使用默认轮询或者加权轮询配合最小连接数即可
当高并发时:ip_hash或者url_hash 来实现,访问一次之后,就不再切换后端web服务器,下一次访问的就是缓存,减少后台服务器的请求压力
为什么使用负载均衡
动态网站的页面上的信息都必须从数据库中读取,每打开一个页面就读取数据库一次,如果访问网站的人数很多,这会对服务器增加很大的荷载,从而影响这个网站的运行速度。所以,我们可以利用负载均衡集群,降低服务器的负载。
相关文章:
Nginx负载均衡(重点)
正向代理 部署正向代理 server { listen 80; server_name localhost; #charset koi8-r; #access_log logs/host.access.log main; location / { root html; index index.html index.htm; proxy_pass http://20.0.0.60:80…...
第一章 SpringBoot入门
1.SpringBoot简介 1.1.简介 Spring Boot来简化spring应用开发,约定大于配置去繁从简,just run就能创建一个独立的,产品级别的应用。 背景:J2EE笨重开发,繁多的配置、低下开发效率、复杂的部署流程、第三方技…...
JavaScript Es6_2笔记 (深入对象 + 内置构造函数 + 包装类型)+包含实例方法
JavaScript 进阶 文章目录 JavaScript 进阶深入对象构造函数实例成员静态成员 内置构造函数ObjectArray包装类型StringNumber 了解面向对象编程的基础概念及构造函数的作用,体会 JavaScript 一切皆对象的语言特征,掌握常见的对象属性和方法的使用。 了解…...
尼科彻斯定理
目录 1.题目概述 2.题解 思路分析 具体实现 1.题目概述 验证尼科彻斯定理,即:任何一个整数m的立方都可以写成m个连续奇数之和。 例如: 1^31 2^335 3^37911 4^313151719 输入一个正整数m(m≤100),将…...
主数据管理案例-中国外运
1、 背景介绍及难点分析 作为世界领先的物流行业整合商、端到端的全程供应链解决方案和一站式物流服务提供商,中国外运非常重视信息化建设,先后投资建设了 300多个信息系统,为中国外运的内部管理和业务运作提供 IT 支持和保障。 由于缺乏统一…...
改进DevSecOps框架的 5 大关键技术
Markets and Markets的一项研究显示,全球DevOps的市场规模从2017年的29亿美元增加到2023年的103.1亿美元,预测期的年复合增长率(CAGR)为24.7%。人们对DevOps越来越感兴趣,因为DevOps不仅能够压缩软件的交付周期,还能提高交付的速度…...
uni-app之app上传pdf类型文件
通过阅读官方文档发现,uni.chooseFile在app端不支持非媒体文件上传; 可以使用这个插件,验证过可以上传pdf;具体使用可以去看文档 插件地址 就是还是会出现相机,这个可能需要自己解决下 实现功能:上传只能上…...
bash: sudo: command not found的解决方法 | 安装sudo
-bash: sudo: command not found的解决方法 https://www.cnblogs.com/pengpengboshi/p/16159443.html 报错 安装apt-get update报错由于没有公钥,无法验证下列签名: NO_PUBKEY A4B469963BF863CC解决办法是手动加入 (sudo可去掉)…...
电脑合上盖子无线网络不会断开
控制面板\硬件和声音\电源选项\系统设置 最终选择不会采取任何操作 选择不会采取任何操作...
【从零开始学习JAVA | 第四十篇】了解线程池
目录 前言: 线程池: 线程池的工作流程: 代码实现线程池: 任务拒绝策略: 线程池多大才算合适? 总结: 前言: 在Java编程中,线程池是一个强大的工具,它能…...
axios如何取消请求,其原理是什么?
axios 可以通过创建一个 CancelToken 来取消一个请求,基本原理是: 创建一个 CancelToken 的实例,它有一个 executor 函数,可以通过调用 executor 参数中的 cancel 函数来取消请求。在 axios 请求配置中指定 cancelToken 属性,将 CancelToken 实例传递进去。当我们需要取消请求…...
消息中间件 Asio (C++)
折腾了一上午,看到这个结果的时候泪目了兄弟闷,讲真。我的asio客户端成功收到服务端发来的消息了。虽然这确实是极其智障又简单的入门哈哈 下载独立版本 asio网络通信库新建cmake工程,CMakeLists.txt加载asioasio最简单的服务端和客户端代码…...
3.4 网络安全管理设备
数据参考:CISP官方 目录 IDS (入侵检测系统)网络安全审计漏洞扫描系统VPN(虚拟专网)堡垒主机安全管理平台 一、IDS (入侵检测系统) 入侵检测系统(IDS)是一种网络安全设备,用于监测和检测网络中的入侵行…...
前端高级面试题-JS
1. 原型 / 构造函数 / 实例 原型( prototype ): ⼀个简单的对象,⽤于实现对象的 属性继承。可以简单的理解成对象的爹。在 Firefox 和 Chrome 中,每个 JavaScript 对象中都包含⼀个__proto__ (⾮标准)的属性指向它爹(该对象的原型),可 obj.p…...
AcWing 1564:哈希 ← 只具有正增量的二次探测法
【题目来源】https://www.acwing.com/problem/content/1566/【题目描述】 将一个由若干个不同正整数构成的整数序列插入到一个哈希表中,然后输出输入数字的位置。 哈希函数定义为 H(key)key%TSize,其中 TSize 是哈希表的最大大小。 利用只具有正增量的二…...
什么是媒体代发布?媒体代发布注意事项
传媒如春雨,润物细无声,大家好,我是51媒体网胡老师。 媒体代发布是指将新闻稿或其他宣传内容委托给专业的媒体代理机构或公司进行发布和推广的活动。这些机构通常拥有丰富的媒体资源、人脉和经验,能够更好地将信息传递给目标受众…...
docker版jxTMS使用指南:使用jxTMS采集数据之二
本文是如何用jxTMS进行数据采集的第二部分,整个系列的文章请查看:docker版jxTMS使用指南:4.4版升级内容 docker版本的使用,请查看:docker版jxTMS使用指南 4.0版jxTMS的说明,请查看:4.0版升级内…...
系列六、Springboot操作RocketMQ
一、同步消息 1.1、发送&接收简单消息 1.1.1、发送简单消息 /*** 测试发送简单消息*/ Test public void sendSimpleMessage() {SendResult result rocketMQTemplate.syncSend("BOOT_TOPIC_SIMPLE", "我是一个简单消息");// 往[BOOT_TOPIC_SIMPLE]主…...
【jupyter异常错误】Kernel started:No module named ipykernel_launcher
尝试过的方案 pip install ipykernel 执行之后提示已经安装,但是执行代码依然报错 解决方案 python -m pip install ipykernel -U --force-reinstall 相当于是强制重新安装 安装成功后没有报错 注:根本原因应该是原来安装的包存在问题,虽然检测出来已经存在…...
使用langchain与你自己的数据对话(五):聊天机器人
之前我已经完成了使用langchain与你自己的数据对话的前四篇博客,还没有阅读这四篇博客的朋友可以先阅读一下: 使用langchain与你自己的数据对话(一):文档加载与切割使用langchain与你自己的数据对话(二):向量存储与嵌入使用langc…...
深入解析Android Verified Boot (AVB):从启动链到镜像验证的完整机制
1. Android Verified Boot (AVB) 是什么? 当你按下手机电源键时,系统会经历一系列复杂的启动过程。AVB(Android Verified Boot)就是在这个过程中确保每一步加载的代码都未被篡改的安全卫士。想象一下,这就像机场的安检…...
【数据湖01】一文了解啥是数据湖~
说实话,我刚开始听到"数据湖"这个词也懵,以为是多高大上的东西。干了几年数据才发现,其实就是个"大杂烩仓库"。先讲个真事:老刘是怎么被数据搞崩溃的我兄弟老刘,某电商公司负责人。2022年业务暴涨…...
程序员必备:优质源码下载网,打通学习、实战与毕设全链路
对于程序员而言,源码是成长路上最宝贵的“养分”——它承载着成熟的编程逻辑、规范的代码风格、先进的架构设计,更是连接理论学习与实际开发的核心桥梁。无论是入门新手想要快速上手、进阶开发者想要突破技术瓶颈,还是应届毕业生想要高效完成…...
探索触控艺术:GestureViews 开源库深度剖析与推荐
探索触控艺术:GestureViews 开源库深度剖析与推荐 【免费下载链接】GestureViews ImageView and FrameLayout with gestures control and position animation 项目地址: https://gitcode.com/gh_mirrors/ge/GestureViews GestureViews 是一款专注于提供流畅手…...
SAP MM模块预留功能实战:从创建到发料的完整流程解析
SAP MM模块预留功能实战:从创建到发料的完整流程解析 在制造业和供应链管理领域,物料预留是确保生产计划顺利执行的关键环节。SAP MM模块中的预留功能,就像一位经验丰富的仓库管理员,能够提前为未来需求锁定必要的物料资源。想象一…...
2026年阿里国际站数字人直播服务商评测
2026 阿里国际站数字人直播服务商选型参考:基于五大维度的评测分析 开篇 随着跨境电商行业的竞争加剧,阿里国际站商家对高效获客工具的需求日益迫切,AI 数字人直播凭借 24 小时不间断开播、降本增效的核心优势,已经成为跨境商家突破时区限制、提升询盘转化的核心抓手。 …...
从混乱到智能:一家精品酒店如何通过客控系统升级实现降本增效
面对激烈的市场竞争与持续攀升的能耗成本,酒店管理者选择客控系统时,品牌与技术路线的决策直接关系到运营成败。本文将通过一个真实案例,拆解一家面临典型困境的精品酒店如何通过精准的客控系统选型与实施,实现运营效率与宾客体验…...
boss __zp_stoken__
声明: 本文章中所有内容仅供学习交流使用,不用于其他任何目的,抓包内容、敏感网址、数据接口等均已做脱敏处理,严禁用于商业用途和非法用途,否则由此产生的一切后果均与作者无关! 逆向分析 部分python代码result ctx.…...
1705.0亿元!企业互联网解决方案市场扩容,为产业升级筑牢数字底座
在数字化浪潮席卷全球的当下,企业对高效、安全且可扩展的互联网和云资源访问需求愈发迫切。企业互联网解决方案作为企业级连接服务和托管网络功能的关键载体,正成为企业数字化转型的重要支撑。据恒州诚思调研统计,2025年全球企业互联网解决方…...
STM32F429外设时钟分配详解:为什么你的定时器速度总是不对?
STM32F429定时器时钟配置实战:破解速度偏差的底层逻辑 第一次在项目中遇到定时器速度异常时,我盯着示波器上飘忽不定的PWM波形百思不得其解——明明代码里的分频系数计算无误,为什么实际输出频率总是偏离预期?这个困扰无数STM32开…...
