当前位置: 首页 > news >正文

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的代理 代理 四层代理 七层代理 正向代理和缓存的配置方式 &#x1f42d;&#x1f42e;&#x1f42f;&#x1f430;&#x1f409;&#x1f40d;&#x1f434;&#x1f411;&#x1f412;&#x1f414;&#x1f436;&#x1f437; 反向代理》负载均衡 负载均衡&#xff…...

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 的使用及其实现。 它们都用于保护共享资源不被两个或多个进程同时修改…...

访问者模式的理解和实践

在软件开发过程中&#xff0c;设计模式为我们提供了解决常见问题的最佳实践。访问者模式&#xff08;Visitor Pattern&#xff09;是行为设计模式之一&#xff0c;它将数据操作与数据结构分离&#xff0c;使得在不修改数据结构的前提下&#xff0c;能够定义作用于这些元素的新的…...

在Scala中对Map函数的使用

package pp28{object cscc {def main(args: Array[String]): Unit {val m1 Map("马云 — 阿里巴巴" -> 1964,"马化腾 — 腾讯" -> 1971,"李彦宏 - 百度" -> 1968,"雷军 - 小米" -> 1969,"丁磊 - 网易" -> …...

PyTorch基本使用-张量的索引操作

在操作张量时&#xff0c;经常要去获取某些元素进行处理或者修改操作&#xff0c;在这里需要了解torch中的索引操作。 准备数据&#xff1a; data torch.randint(0,10,[4,5]) print(data--->,data)输出结果&#xff1a; data---> tensor([[3, 9, 4, 0, 5],[7, 5, 9, …...

OpenCV实验:图片加水印

第二篇&#xff1a;图片添加水印&#xff08;加 logo&#xff09; 1. 实验原理 水印原理&#xff1a; 图片添加水印是图像叠加的一种应用&#xff0c;分为透明水印和不透明水印。水印的实现通常依赖于像素值操作&#xff0c;将水印图片融合到目标图片中&#xff0c;常用的方法…...

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 是一个分布式的搜索和分析引擎&#xff0c;广泛应用于日志分析、全文搜索、实时数据分析等场景。它以其高性能、高可用性和易用性而著称。本文档将引导您完成一个基本的 Elasticsearch 集群配置&#xff0c;包括节点间的通信、客户端访问、安全设置等关键步骤。我…...

微信小程序5-图片实现点击动作和动态加载同类数据

搜索 微信小程序 “动物觅踪” 观看效果 感谢阅读&#xff0c;初学小白&#xff0c;有错指正。 一、功能描述 a. 原本想通过按钮加载背景图片&#xff0c;来实现一个可以点击的搜索button&#xff0c;但是遇到两个难点&#xff0c;一是按钮大小调整不方便&#xff08;网上搜索…...

策略梯度定理公式的详细推导

策略梯度定理公式的详细推导 以下是策略梯度定理公式从基础概率公式到最终形式的完整推导&#xff0c;帮助更清晰地理解推导过程中的每一个步骤。 1. 策略梯度的目标 我们希望最大化期望累积奖励 ( J ( θ ) J(\theta) J(θ) )&#xff0c;其定义为&#xff1a; J ( θ ) E…...

力扣-图论-10【算法学习day.60】

前言 ###我做这类文章一个重要的目的还是给正在学习的大家提供方向和记录学习过程&#xff08;例如想要掌握基础用法&#xff0c;该刷哪些题&#xff1f;&#xff09;我的解析也不会做的非常详细&#xff0c;只会提供思路和一些关键点&#xff0c;力扣上的大佬们的题解质量是非…...

《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 解决办法 第一步&#xff1a; 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&#xff1a; go get -u github.com/nacos-group/nacos-sdk-go/v2 快速使用 初始化客户端配置ClientConfig constant.ClientConfig{TimeoutMs uint64 // 请求Nacos服务端的超时时间&#xff0c;默…...

ssd202d-badblock-坏块检测

这边文章讲述的是坏快检测功能 思路&#xff1a; 1.第一次烧录固件会实现跳坏块&#xff0c;但是后续使用会导致坏块的产生&#xff1b; 于是我在uboot环境变量添加了两个变量来控制坏快 lb_badnum //坏块个数 lb_badoff //坏块所在位置 2.第一次开机会根据lb_badnum是否…...

CTF show Web 红包题第六弹

提示 1.不是SQL注入 2.需要找关键源码 思路 进入页面发现是一个登录框&#xff0c;很难让人不联想到SQL注入&#xff0c;但提示都说了不是SQL注入&#xff0c;所以就不往这方面想了 ​ 先查看一下网页源码&#xff0c;发现一段JavaScript代码&#xff0c;有一个关键类ctfs…...

23-Oracle 23 ai 区块链表(Blockchain Table)

小伙伴有没有在金融强合规的领域中遇见&#xff0c;必须要保持数据不可变&#xff0c;管理员都无法修改和留痕的要求。比如医疗的电子病历中&#xff0c;影像检查检验结果不可篡改行的&#xff0c;药品追溯过程中数据只可插入无法删除的特性需求&#xff1b;登录日志、修改日志…...

YSYX学习记录(八)

C语言&#xff0c;练习0&#xff1a; 先创建一个文件夹&#xff0c;我用的是物理机&#xff1a; 安装build-essential 练习1&#xff1a; 我注释掉了 #include <stdio.h> 出现下面错误 在你的文本编辑器中打开ex1文件&#xff0c;随机修改或删除一部分&#xff0c;之后…...

React19源码系列之 事件插件系统

事件类别 事件类型 定义 文档 Event Event 接口表示在 EventTarget 上出现的事件。 Event - Web API | MDN UIEvent UIEvent 接口表示简单的用户界面事件。 UIEvent - Web API | MDN KeyboardEvent KeyboardEvent 对象描述了用户与键盘的交互。 KeyboardEvent - Web…...

css3笔记 (1) 自用

outline: none 用于移除元素获得焦点时默认的轮廓线 broder:0 用于移除边框 font-size&#xff1a;0 用于设置字体不显示 list-style: none 消除<li> 标签默认样式 margin: xx auto 版心居中 width:100% 通栏 vertical-align 作用于行内元素 / 表格单元格&#xff…...

企业如何增强终端安全?

在数字化转型加速的今天&#xff0c;企业的业务运行越来越依赖于终端设备。从员工的笔记本电脑、智能手机&#xff0c;到工厂里的物联网设备、智能传感器&#xff0c;这些终端构成了企业与外部世界连接的 “神经末梢”。然而&#xff0c;随着远程办公的常态化和设备接入的爆炸式…...

如何在网页里填写 PDF 表格?

有时候&#xff0c;你可能希望用户能在你的网站上填写 PDF 表单。然而&#xff0c;这件事并不简单&#xff0c;因为 PDF 并不是一种原生的网页格式。虽然浏览器可以显示 PDF 文件&#xff0c;但原生并不支持编辑或填写它们。更糟的是&#xff0c;如果你想收集表单数据&#xff…...

Fabric V2.5 通用溯源系统——增加图片上传与下载功能

fabric-trace项目在发布一年后,部署量已突破1000次,为支持更多场景,现新增支持图片信息上链,本文对图片上传、下载功能代码进行梳理,包含智能合约、后端、前端部分。 一、智能合约修改 为了增加图片信息上链溯源,需要对底层数据结构进行修改,在此对智能合约中的农产品数…...

Yolov8 目标检测蒸馏学习记录

yolov8系列模型蒸馏基本流程&#xff0c;代码下载&#xff1a;这里本人提交了一个demo:djdll/Yolov8_Distillation: Yolov8轻量化_蒸馏代码实现 在轻量化模型设计中&#xff0c;**知识蒸馏&#xff08;Knowledge Distillation&#xff09;**被广泛应用&#xff0c;作为提升模型…...

音视频——I2S 协议详解

I2S 协议详解 I2S (Inter-IC Sound) 协议是一种串行总线协议&#xff0c;专门用于在数字音频设备之间传输数字音频数据。它由飞利浦&#xff08;Philips&#xff09;公司开发&#xff0c;以其简单、高效和广泛的兼容性而闻名。 1. 信号线 I2S 协议通常使用三根或四根信号线&a…...