当前位置: 首页 > 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是否…...

vscode里如何用git

打开vs终端执行如下&#xff1a; 1 初始化 Git 仓库&#xff08;如果尚未初始化&#xff09; git init 2 添加文件到 Git 仓库 git add . 3 使用 git commit 命令来提交你的更改。确保在提交时加上一个有用的消息。 git commit -m "备注信息" 4 …...

Linux链表操作全解析

Linux C语言链表深度解析与实战技巧 一、链表基础概念与内核链表优势1.1 为什么使用链表&#xff1f;1.2 Linux 内核链表与用户态链表的区别 二、内核链表结构与宏解析常用宏/函数 三、内核链表的优点四、用户态链表示例五、双向循环链表在内核中的实现优势5.1 插入效率5.2 安全…...

【入坑系列】TiDB 强制索引在不同库下不生效问题

文章目录 背景SQL 优化情况线上SQL运行情况分析怀疑1:执行计划绑定问题?尝试:SHOW WARNINGS 查看警告探索 TiDB 的 USE_INDEX 写法Hint 不生效问题排查解决参考背景 项目中使用 TiDB 数据库,并对 SQL 进行优化了,添加了强制索引。 UAT 环境已经生效,但 PROD 环境强制索…...

LeetCode - 394. 字符串解码

题目 394. 字符串解码 - 力扣&#xff08;LeetCode&#xff09; 思路 使用两个栈&#xff1a;一个存储重复次数&#xff0c;一个存储字符串 遍历输入字符串&#xff1a; 数字处理&#xff1a;遇到数字时&#xff0c;累积计算重复次数左括号处理&#xff1a;保存当前状态&a…...

听写流程自动化实践,轻量级教育辅助

随着智能教育工具的发展&#xff0c;越来越多的传统学习方式正在被数字化、自动化所优化。听写作为语文、英语等学科中重要的基础训练形式&#xff0c;也迎来了更高效的解决方案。 这是一款轻量但功能强大的听写辅助工具。它是基于本地词库与可选在线语音引擎构建&#xff0c;…...

基于SpringBoot在线拍卖系统的设计和实现

摘 要 随着社会的发展&#xff0c;社会的各行各业都在利用信息化时代的优势。计算机的优势和普及使得各种信息系统的开发成为必需。 在线拍卖系统&#xff0c;主要的模块包括管理员&#xff1b;首页、个人中心、用户管理、商品类型管理、拍卖商品管理、历史竞拍管理、竞拍订单…...

Modbus RTU与Modbus TCP详解指南

目录 1. Modbus协议基础 1.1 什么是Modbus? 1.2 Modbus协议历史 1.3 Modbus协议族 1.4 Modbus通信模型 🎭 主从架构 🔄 请求响应模式 2. Modbus RTU详解 2.1 RTU是什么? 2.2 RTU物理层 🔌 连接方式 ⚡ 通信参数 2.3 RTU数据帧格式 📦 帧结构详解 🔍…...

【HarmonyOS 5】鸿蒙中Stage模型与FA模型详解

一、前言 在HarmonyOS 5的应用开发模型中&#xff0c;featureAbility是旧版FA模型&#xff08;Feature Ability&#xff09;的用法&#xff0c;Stage模型已采用全新的应用架构&#xff0c;推荐使用组件化的上下文获取方式&#xff0c;而非依赖featureAbility。 FA大概是API7之…...

如何做好一份技术文档?从规划到实践的完整指南

如何做好一份技术文档&#xff1f;从规划到实践的完整指南 &#x1f31f; 嗨&#xff0c;我是IRpickstars&#xff01; &#x1f30c; 总有一行代码&#xff0c;能点亮万千星辰。 &#x1f50d; 在技术的宇宙中&#xff0c;我愿做永不停歇的探索者。 ✨ 用代码丈量世界&…...

shell脚本质数判断

shell脚本质数判断 shell输入一个正整数,判断是否为质数(素数&#xff09;shell求1-100内的质数shell求给定数组输出其中的质数 shell输入一个正整数,判断是否为质数(素数&#xff09; 思路&#xff1a; 1:1 2:1 2 3:1 2 3 4:1 2 3 4 5:1 2 3 4 5-------> 3:2 4:2 3 5:2 3…...