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

Golang 面试经典题:map 的 key 可以是什么类型?哪些不可以?

Golang 面试经典题&#xff1a;map 的 key 可以是什么类型&#xff1f;哪些不可以&#xff1f; 在 Golang 的面试中&#xff0c;map 类型的使用是一个常见的考点&#xff0c;其中对 key 类型的合法性 是一道常被提及的基础却很容易被忽视的问题。本文将带你深入理解 Golang 中…...

k8s从入门到放弃之Ingress七层负载

k8s从入门到放弃之Ingress七层负载 在Kubernetes&#xff08;简称K8s&#xff09;中&#xff0c;Ingress是一个API对象&#xff0c;它允许你定义如何从集群外部访问集群内部的服务。Ingress可以提供负载均衡、SSL终结和基于名称的虚拟主机等功能。通过Ingress&#xff0c;你可…...

visual studio 2022更改主题为深色

visual studio 2022更改主题为深色 点击visual studio 上方的 工具-> 选项 在选项窗口中&#xff0c;选择 环境 -> 常规 &#xff0c;将其中的颜色主题改成深色 点击确定&#xff0c;更改完成...

Python爬虫实战:研究feedparser库相关技术

1. 引言 1.1 研究背景与意义 在当今信息爆炸的时代,互联网上存在着海量的信息资源。RSS(Really Simple Syndication)作为一种标准化的信息聚合技术,被广泛用于网站内容的发布和订阅。通过 RSS,用户可以方便地获取网站更新的内容,而无需频繁访问各个网站。 然而,互联网…...

Objective-C常用命名规范总结

【OC】常用命名规范总结 文章目录 【OC】常用命名规范总结1.类名&#xff08;Class Name)2.协议名&#xff08;Protocol Name)3.方法名&#xff08;Method Name)4.属性名&#xff08;Property Name&#xff09;5.局部变量/实例变量&#xff08;Local / Instance Variables&…...

ServerTrust 并非唯一

NSURLAuthenticationMethodServerTrust 只是 authenticationMethod 的冰山一角 要理解 NSURLAuthenticationMethodServerTrust, 首先要明白它只是 authenticationMethod 的选项之一, 并非唯一 1 先厘清概念 点说明authenticationMethodURLAuthenticationChallenge.protectionS…...

大数据学习(132)-HIve数据分析

​​​​&#x1f34b;&#x1f34b;大数据学习&#x1f34b;&#x1f34b; &#x1f525;系列专栏&#xff1a; &#x1f451;哲学语录: 用力所能及&#xff0c;改变世界。 &#x1f496;如果觉得博主的文章还不错的话&#xff0c;请点赞&#x1f44d;收藏⭐️留言&#x1f4…...

分布式增量爬虫实现方案

之前我们在讨论的是分布式爬虫如何实现增量爬取。增量爬虫的目标是只爬取新产生或发生变化的页面&#xff0c;避免重复抓取&#xff0c;以节省资源和时间。 在分布式环境下&#xff0c;增量爬虫的实现需要考虑多个爬虫节点之间的协调和去重。 另一种思路&#xff1a;将增量判…...

基于Java+MySQL实现(GUI)客户管理系统

客户资料管理系统的设计与实现 第一章 需求分析 1.1 需求总体介绍 本项目为了方便维护客户信息为了方便维护客户信息&#xff0c;对客户进行统一管理&#xff0c;可以把所有客户信息录入系统&#xff0c;进行维护和统计功能。可通过文件的方式保存相关录入数据&#xff0c;对…...

【无标题】路径问题的革命性重构:基于二维拓扑收缩色动力学模型的零点隧穿理论

路径问题的革命性重构&#xff1a;基于二维拓扑收缩色动力学模型的零点隧穿理论 一、传统路径模型的根本缺陷 在经典正方形路径问题中&#xff08;图1&#xff09;&#xff1a; mermaid graph LR A((A)) --- B((B)) B --- C((C)) C --- D((D)) D --- A A -.- C[无直接路径] B -…...