nginx反向代理(负载均衡)
nginx的代理
代理
四层代理
七层代理
正向代理和缓存的配置方式
🐭🐮🐯🐰🐉🐍🐴🐑🐒🐔🐶🐷
反向代理···········》负载均衡
负载均衡:将四层或者七层的请求分配到多台后端的服务器上,从而分担整个业务的负载,既可以提高系统的稳定性,也可以提供高可用(备灾,其中的一台后端服务器如果发生故障,不影响整体业务)

负载均衡的算法:
- round robin ------ 轮询 rr :负载均衡的默认算法,请求轮流分配给后端服务器
轮询算法适用于后端服务器处理能力相近的情况,默认的算法,可以不加
- 加权轮询:weight round robin ------- 轮询的升级版,给每个后端服务器赋予不同的权重,给处理能力更强的服务器设置更高的权重,处理能力低的,设置低权重
高峰时间可以通过这个方法进行浏览的优化,适用于服务器处理能力差异比较大的情况
- ip_Hash:
当我们访问后端服务器,根据客户端的ip地址,使用hash算法,计算出ip地址的hash值,然后再把请求发送到相应的后端服务器,如果客户端访问的ip地址相同,通过hash算法,再一次的 请求会被分配到上一次访问的服务器,保证会话的稳定
↓
负载均衡的会话保持 ·············》ip_Hash
会话保持到期之后,会话中断,重新请求时会重新计算hash值
A ··················》192.168.31.10 ···············》hash值 ········》B
↓
中断
↓
A ···············》192.168.31.10 ·············》nginx1
最小连接数(配合加权轮询一块儿使用):最少连接数的算法可以将请求发送到当前连接比较少的后端服务器 ---------- 这种算法适用于后端服务器处理任务耗时不同的情况,可以有效的避免所有的请求集中在处理能力更强的后端服务器上
-
least_conn (配合加权轮询)
weight =3 -
URL_HASH:根据请求当中的url地址来计算hash值,如果客户端请求的url地址相同,客户端的请求会被分配到同一个服务器上
www.baidu.com/test1 ············ > hash值 ···········》B
www.baidu.com/test1 ·············> hash值 ···········》C
后台服务器的数量发送变化,会影响结果
负载均衡的特点:
- 1、根据算法把请求分发到不同的服务器
- 2、客户端访问的是代理地址,响应也是代理服务器响应
- 3、客户端并不了解后端服务器的情况
- 4、可以提高安全性,后端服务器是隐藏的
- 5、负责均衡是有缓存的,可以直接访问缓存,提高响应速度
负载均衡的架构:
nginx1 -------- 192.168.31.13 ------------ 代理服务器
nginx2 -------- 192.168.31.14 ------------ 后端1
nginx3 -------- 192.168.31.15 ------------ 后端2
客户端:谷歌浏览器
配置流量分发,主要是依靠代理服务器完成的,主要配置在代理服务器完成
- 七层代理:
upstream:仅支持http协议,用来处理http的请求和响应
upstream只能写在http模块当中,不能在server也不在全局
↓
upstream xy104 {
(ip_hash;)
(least_conn 配合加权轮询)
(hash $request_uri consistent; url_hash的算法 -------它不是会话保持!)
server 192.168.31.14 (weight=3);
server 192.168.31.15 (weight=2);
}
使用七层代理要写在server的location模块当中★★★
↓
proxy_pass http://xy104
- 四层代理:
stream:不支持http协议,仅支持tcp和udp,处理数据包的流量分发
四层代理需要学在全局模块当中,不能在http模块当中写入★★★
语法配置:
安装nginx的时候必须要有支持stream的模块★★★
stream {
upstream xy104 {
server 192.168.31.14:80;
server 192.168.31.15:80;}
server {listen 81;proxy_pass xy104;}
}
-
rr
-
weight
-
least_conn
-
ip_hash和url_hash不能在四层算法当中使用
基于域名:
upstream xy104 {server www.xy104.com;
server www.xy105.com;}server_name www.123.ccc;
location /
↓
proxy_pass http://xy104;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
nginx重点:★★★★★★
1、nginx配置文件的内容,以及各个模块的作用
2、nginx的优化 -----隐藏版本号,页面压缩,cpu绑定,高并发配置
3、nginx的location匹配 ------- 优先级
4、nginx的重定向 ------ 标志位
5、nginx的负载均衡,算法
TOMCAT:
web应用程序
php ------ .php
tomcat ------ .jsp ------- java编译的代码
↓
三个功能组合而成:
-
java servlet:tomcat是一个serlet容器,负责管理和执行java-sevlet,服务端的java程序,处理客户端的http的请求和响应
-
java server:服务端的配置
-
pages:动态页面的技术 ------- java代码完成的
tomcat既可以作为 以java代码为基础的动态页面,也可以处理和转发动态请求
tomcat的并发能力很差,适合小项目
tomcat的核心组件:
-
web容器:处理web的请求,影响,动态页面的展示
-
jsp容器:解析index.jsp中的java代码转换为servlet的代码,然后由servlet来编译执行 ··········jsp是一种技术模板,类似于html语言,允许在html文件当中,嵌入java的代码
-
servlet容器:接收web容器的请求,负责加载,初始化,执行和管理

功能组件:
- connector:接收外部的请求,以及响应请求
- container:包含了engine,host,context,webapp四
个组件组成 - service:包含了connector和container
- engine:引擎,用来管理多个虚拟主机,一个service只能有一个engine
- host:代表一个虚拟主机,也可以理解为站点
- context:对应的web应用
- wrapps:最终的封装器,容器的最底层
- bin:启动和关闭的脚本文件
- conf:tomcat的配置文件
- logs:tomcat的日志文件
- webapps:保存不同项目的应用目录
- work:工作目录
- temp:临时文件保存目录

- Host name:主机名
- appBase=“webapps” web应用程序目录
- unpackWARs=“true” 是否对.war格式结尾进行展开,默认配置
- autoDeploy=“true” tomcat在运行时会自动部署webapps里面对应的配置
- xmlValiddation=“false” 是否启动xml的命名空间
- Context docBase=“/usr/local/tomcat/webapps/test1”
<Host name="www.test1.com" appBase="webapps" unpackWARs="true" autoDeploy="true" xmlValidation="false" xmlNamespaceAware="false"><Context docBase="/usr/local/tomcat/webapps/test1" path="" reloadable="true" /></Host>
tomcat 对外端口默认:8080
相关文章:
nginx反向代理(负载均衡)
nginx的代理 代理 四层代理 七层代理 正向代理和缓存的配置方式 🐭🐮🐯🐰🐉🐍🐴🐑🐒🐔🐶🐷 反向代理》负载均衡 负载均衡ÿ…...
Android系统应用主要模块
设置 Android Settings开发总结 Launcher Android Launcher开发学习总结 System UI Android SystemUI 学习总结...
【万字详解】三维重建(二)——NeRF、NeuS、MeshUDF、NeuralUDF、3DGS、GShell
文章目录 一、NeRF:Representing Scenes as Neural Radiance Fields for View Synthesis(推荐读)1.1 式1 神经网络的输入和输出1.2 式2 体素渲染算法1.3 式3 损失函数1.4 位置编码1.5 基本原理二、经典的重建流程2.1 传统的三维重建pipeline2.2 神经网络回归2.3 可微渲染最优…...
【RK3588 Linux 5.x 内核编程】-内核线程与Seqlock
内核线程与Seqlock 文章目录 内核线程与Seqlock1、Seqlock介绍2、Seqlock相关API2.1 初始化2.2 写操作2.3 读操作3、驱动实现4、驱动验证在前面的文章中,我们介绍了 Mutex、Spinlock、Read/Write Spinlock 的使用及其实现。 它们都用于保护共享资源不被两个或多个进程同时修改…...
访问者模式的理解和实践
在软件开发过程中,设计模式为我们提供了解决常见问题的最佳实践。访问者模式(Visitor Pattern)是行为设计模式之一,它将数据操作与数据结构分离,使得在不修改数据结构的前提下,能够定义作用于这些元素的新的…...
在Scala中对Map函数的使用
package pp28{object cscc {def main(args: Array[String]): Unit {val m1 Map("马云 — 阿里巴巴" -> 1964,"马化腾 — 腾讯" -> 1971,"李彦宏 - 百度" -> 1968,"雷军 - 小米" -> 1969,"丁磊 - 网易" -> …...
PyTorch基本使用-张量的索引操作
在操作张量时,经常要去获取某些元素进行处理或者修改操作,在这里需要了解torch中的索引操作。 准备数据: data torch.randint(0,10,[4,5]) print(data--->,data)输出结果: data---> tensor([[3, 9, 4, 0, 5],[7, 5, 9, …...
OpenCV实验:图片加水印
第二篇:图片添加水印(加 logo) 1. 实验原理 水印原理: 图片添加水印是图像叠加的一种应用,分为透明水印和不透明水印。水印的实现通常依赖于像素值操作,将水印图片融合到目标图片中,常用的方法…...
sql server log文件
确定 SQL Server 实例中具有大量 VDF 的数据库 SELECT [name], COUNT(l.database_id) AS vlf_count FROM sys.databases AS s CROSS APPLY sys.dm_db_log_info(s.database_id) AS l GROUP BY [name] HAVING COUNT(l.database_id) > 100; 在收缩日志文件之前确定事务日志中…...
Elasticsearch 集群部署
Elasticsearch 是一个分布式的搜索和分析引擎,广泛应用于日志分析、全文搜索、实时数据分析等场景。它以其高性能、高可用性和易用性而著称。本文档将引导您完成一个基本的 Elasticsearch 集群配置,包括节点间的通信、客户端访问、安全设置等关键步骤。我…...
微信小程序5-图片实现点击动作和动态加载同类数据
搜索 微信小程序 “动物觅踪” 观看效果 感谢阅读,初学小白,有错指正。 一、功能描述 a. 原本想通过按钮加载背景图片,来实现一个可以点击的搜索button,但是遇到两个难点,一是按钮大小调整不方便(网上搜索…...
策略梯度定理公式的详细推导
策略梯度定理公式的详细推导 以下是策略梯度定理公式从基础概率公式到最终形式的完整推导,帮助更清晰地理解推导过程中的每一个步骤。 1. 策略梯度的目标 我们希望最大化期望累积奖励 ( J ( θ ) J(\theta) J(θ) ),其定义为: J ( θ ) E…...
力扣-图论-10【算法学习day.60】
前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程(例如想要掌握基础用法,该刷哪些题?)我的解析也不会做的非常详细,只会提供思路和一些关键点,力扣上的大佬们的题解质量是非…...
《Python WEB安全 库全解析》
《Python WEB安全 库全解析》 一、Python WEB安全 库概述二、常见的 Python WEB安全 库介绍1. Jiasule2. Awesome Python Security3. Flask-Security4. Flask-SeaSurf 三、Python WEB 安全库的优缺点1. 优点2. 缺点 四、Python WEB 安全库的使用场景1. 开发 Web 应用2. 处理敏感…...
Linux yum-config-manager命令异常
错误信息 使用 yum-config-manager命令时错误信息如下 sudo yum-config-manager \ > --add-repo \ > https://download.docker.com/linux/centos/docker-ce.repo sudo: yum-config-manager: command not found 解决办法 第一步: sudo yum -y install yum-u…...
ios 开发配置蓝牙
如果使用了蓝牙功能, 又没有配置, 会出现以下错误: This app has crashed because it attempted to access privacy-sensitive data without a usage description. The apps Info.plist must contain an NSBluetoothAlwaysUsageDescription key with a string value explaini…...
geoserver(1) 发布sql 图层 支持自定义参数
前提使用postgis 数据库支持关联 join 支持 in,not in,like,及其他sql原生函数 新增sql图层 编写自定义sql 编辑sql语句必须输出带有geom数据 正则表达式去除 设置id以及坐标参考系 预览sql图层效果 拼接sql参数 http://xxx.com/geoserver/weather/wms?SERVICEWMS&VERSI…...
Linux:network:添加ip的时候自动添加一个本地路由
文章目录 问题问题 最近在看一个路由的问题,顺便看内核代码,发现在添加IP的时候,内核会自动添加一个local route。 net/ipv4/devinet.c inet_rtm_newaddr->__inet_insert_ifa /* Send message first, then call notifier.Notifier will trigger FIB update, so thatlis…...
go 集成nacos注册中心、配置中心
使用限制 Go>v1.15 Nacos>2.x 安装 使用go get安装SDK: go get -u github.com/nacos-group/nacos-sdk-go/v2 快速使用 初始化客户端配置ClientConfig constant.ClientConfig{TimeoutMs uint64 // 请求Nacos服务端的超时时间,默…...
ssd202d-badblock-坏块检测
这边文章讲述的是坏快检测功能 思路: 1.第一次烧录固件会实现跳坏块,但是后续使用会导致坏块的产生; 于是我在uboot环境变量添加了两个变量来控制坏快 lb_badnum //坏块个数 lb_badoff //坏块所在位置 2.第一次开机会根据lb_badnum是否…...
React Native在HarmonyOS 5.0阅读类应用开发中的实践
一、技术选型背景 随着HarmonyOS 5.0对Web兼容层的增强,React Native作为跨平台框架可通过重新编译ArkTS组件实现85%以上的代码复用率。阅读类应用具有UI复杂度低、数据流清晰的特点。 二、核心实现方案 1. 环境配置 (1)使用React Native…...
Java-41 深入浅出 Spring - 声明式事务的支持 事务配置 XML模式 XML+注解模式
点一下关注吧!!!非常感谢!!持续更新!!! 🚀 AI篇持续更新中!(长期更新) 目前2025年06月05日更新到: AI炼丹日志-28 - Aud…...
unix/linux,sudo,其发展历程详细时间线、由来、历史背景
sudo 的诞生和演化,本身就是一部 Unix/Linux 系统管理哲学变迁的微缩史。来,让我们拨开时间的迷雾,一同探寻 sudo 那波澜壮阔(也颇为实用主义)的发展历程。 历史背景:su的时代与困境 ( 20 世纪 70 年代 - 80 年代初) 在 sudo 出现之前,Unix 系统管理员和需要特权操作的…...
土地利用/土地覆盖遥感解译与基于CLUE模型未来变化情景预测;从基础到高级,涵盖ArcGIS数据处理、ENVI遥感解译与CLUE模型情景模拟等
🔍 土地利用/土地覆盖数据是生态、环境和气象等诸多领域模型的关键输入参数。通过遥感影像解译技术,可以精准获取历史或当前任何一个区域的土地利用/土地覆盖情况。这些数据不仅能够用于评估区域生态环境的变化趋势,还能有效评价重大生态工程…...
select、poll、epoll 与 Reactor 模式
在高并发网络编程领域,高效处理大量连接和 I/O 事件是系统性能的关键。select、poll、epoll 作为 I/O 多路复用技术的代表,以及基于它们实现的 Reactor 模式,为开发者提供了强大的工具。本文将深入探讨这些技术的底层原理、优缺点。 一、I…...
C++ Visual Studio 2017厂商给的源码没有.sln文件 易兆微芯片下载工具加开机动画下载。
1.先用Visual Studio 2017打开Yichip YC31xx loader.vcxproj,再用Visual Studio 2022打开。再保侟就有.sln文件了。 易兆微芯片下载工具加开机动画下载 ExtraDownloadFile1Info.\logo.bin|0|0|10D2000|0 MFC应用兼容CMD 在BOOL CYichipYC31xxloaderDlg::OnIni…...
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数
高效线程安全的单例模式:Python 中的懒加载与自定义初始化参数 在软件开发中,单例模式(Singleton Pattern)是一种常见的设计模式,确保一个类仅有一个实例,并提供一个全局访问点。在多线程环境下,实现单例模式时需要注意线程安全问题,以防止多个线程同时创建实例,导致…...
用机器学习破解新能源领域的“弃风”难题
音乐发烧友深有体会,玩音乐的本质就是玩电网。火电声音偏暖,水电偏冷,风电偏空旷。至于太阳能发的电,则略显朦胧和单薄。 不知你是否有感觉,近两年家里的音响声音越来越冷,听起来越来越单薄? —…...
iOS性能调优实战:借助克魔(KeyMob)与常用工具深度洞察App瓶颈
在日常iOS开发过程中,性能问题往往是最令人头疼的一类Bug。尤其是在App上线前的压测阶段或是处理用户反馈的高发期,开发者往往需要面对卡顿、崩溃、能耗异常、日志混乱等一系列问题。这些问题表面上看似偶发,但背后往往隐藏着系统资源调度不当…...
C++课设:简易日历程序(支持传统节假日 + 二十四节气 + 个人纪念日管理)
名人说:路漫漫其修远兮,吾将上下而求索。—— 屈原《离骚》 创作者:Code_流苏(CSDN)(一个喜欢古诗词和编程的Coder😊) 专栏介绍:《编程项目实战》 目录 一、为什么要开发一个日历程序?1. 深入理解时间算法2. 练习面向对象设计3. 学习数据结构应用二、核心算法深度解析…...
