Linux服务:Nginx反向代理与负载均衡
目录
一、Nginx反向代理
1、什么是代理
2、实现反向代理实验
①实验拓扑
②实验目的
③实验过程
二、反向代理负载均衡
1、反向代理负载均衡调度算法
①轮询算法
②加权轮询算法
③最小连接数算法
④ip、url 哈希算法
⑤响应时间fair算法
2、实现反向代理负载均衡实验
①实验拓扑
②实验目的
③实验过程
一、Nginx反向代理
1、什么是代理
代理分为两类,正向代理和反向代理。
正向代理:帮助用户访问服务器,缓存服务器内容。
反向代理:代理服务器处理用户的请求,决定转发请求给谁处理负载均衡的作用。
2、实现反向代理实验
nginx可以代理七层(应用层)和四层(网络层),代理七层代理比四层代理看到的东西多功能强大,可以看到真实数据。
使用模块: proxy_pass 反向代理的服务器地址或域名;
①实验拓扑
②实验目的
由pc2代理服务器,代理服务端pc3处理用户pc1的请求。
③实验过程
①首先准备三台虚拟机且关闭防火墙和selinux,其中pc2和pc3安装nginx。
pc2、pc3执行:
yum install epel-release -y
yum install nginx -y
#安装nginx
②pc2和pc3上创建子配置文件test.conf
pc2、pc3执行:
cd /etc/nginx/conf.d/
touch test.conf
#进入子配置文件目录创建子配置文件
③服务端pc3子配置文件内容
server {root /etc/nginx/html;
#指定虚拟主机根目录
}
④创建服务端pc3虚拟主机的根目录,并写默认内容为this is pc3在index.html中
mkdir -p /etc/nginx/html;
echo "this is pc3">/etc/nginx/html/index.html
#递归创建文件夹并设置默认主页内容
⑤反向代理服务器pc2的配置文件内容:
server {listen 80;
#监听所有80端口server_name www.lhj.com;
#创建虚拟主机www.lhj.com
location /{
proxy_pass http://192.168.30.13
#访问反代的虚拟主机www.lhj.com则由192.168.30.13处理请求
}
}
⑥代理服务和服务端开启nginx服务,并在pc1客户端添加www.lhj.com的对应hosts文件进行测试
pc2、pc3执行:
systemctl start nginx
pc1执行:
sed -i '1a\192.168.30.12 www.lhj.com' /etc/hosts
#在/etc/hosts文件的第一行添加192.168.30.12 www.lhj.com内容
curl www.lhj.com
#访问反向代理服务器
得到内容
this is pc3
二、反向代理负载均衡
nginx反向代理负载均衡中用的是upstream模块,应用于http模块中,目的为可为所有server模块提供服务,默认算法为轮询。
使用格式:
upstream name(反代名称){
server 后端服务器地址 [算法] [其他配置] ;
}
其他配置:①max_conns=数字;设置最大活动连接数,默认为0表示无限制
②max_fails=数字;后端服务器下载条件,对本次调度选择的后端服务器进行连续检查,如果都失败标记不可用,默认1次
③fail_timeout=time;后的服务器上行时间,坏掉后修复需要检查多久才能上线使用,默认检查10s
④backup 设置为备份服务器,所有服务器不可用时使用此服务,注意不能指定自己;
⑤down 指定此服务器down状态,无论本身是什么状态;
1、反向代理负载均衡调度算法
①轮询算法
默认算法是轮询算法即反向代理服务器处理用户请求时,每个后端服务器都轮流给。
upstream lhj{ server http://192.168.30.11;
server http://192.168.30.12;
}
②加权轮询算法
在默认轮询的基础上增加权重,weight=number。如果后端有2个服务器其中一个配置权重为weight=3另外一个不配置默认是1,则有用户访问时分配给给有权重的服务器和不配置权重的服务器的比例为3:1。
upstream lhj{ server http://192.168.30.11 weight=3;
server http://192.168.30.12;
}
③最小连接数算法
按照nginx反向代理服务器和后端服务器的连接数分配请求,连接越少的分配处理请求优先级越高。例如若最小连接数(least_conn;)是设置是3,后端服务器1有2个请求在处理,而后端服务器2只有一个请求在处理则新请求交给后端服务器2。
upstream lhj{ least_conn;
server http://192.168.30.11;
server http://192.168.30.12;
}
④ip、url 哈希算法
每个请求按访问ip或者url的hash结果分配,这样每个访客固定访问一个后端服务器,不需要知道是如何计算的,只要了解会固定访问一个后端服务器即可。
⑤响应时间fair算法
需要解读nginx第三方模块ngx_http_upstream_fair_module实现,配置时max_fails=number为后端服务器配置,默认单位为秒,按照响应时间来处理请求,响应时间越短越优先分配
2、实现反向代理负载均衡实验
使用变量:$remote_root
①实验拓扑
②实验目的
用户pc1访问代理服务的www.lhj.com虚拟主机域名时,若由服务端pc3服务器处理则返回this is pc3若由服务端pc4服务器处理则返回this is pc4 用nginx反向代理实现负载均衡。
③实验过程
①首先准备四台虚拟机且关闭防火墙和selinux,其中pc2、pc3、pc4安装nginx。
pc2、pc3、pc4执行:
yum install epel-release -y
yum install nginx -y
#安装nginx
②pc2、pc3、pc4上创建子配置文件test.conf
pc2、pc3、pc4执行:
cd /etc/nginx/conf.d/
touch test.conf
#进入子配置文件目录创建子配置文件
③服务端pc3子配置文件内容
server {root /etc/nginx/html;
#指定虚拟主机根目录
}
④创建服务端pc3虚拟主机的根目录,并写默认内容为this is pc3在index.html中
mkdir -p /etc/nginx/html;
echo "this is pc3">/etc/nginx/html/index.html
#递归创建文件夹并设置默认主页内容
⑤服务端pc4子配置文件内容
server {root /etc/nginx/html;
#指定虚拟主机根目录
}
⑥服务端pc4子配置文件内容
server {root /etc/nginx/html;
#指定虚拟主机根目录
}
⑦创建服务端pc4虚拟主机的根目录,并写默认内容为this is pc4在index.html中
mkdir -p /etc/nginx/html;
echo "this is pc4">/etc/nginx/html/index.html
⑧反向代理服务器pc2的主配置文件和子配置文件修改:
主配置文件内容修改:
vim /etc/nginx/nginx.conf
#打开主配置文件,在主配置文件的http模块中添加内容如下:
upstream lhj {
#创建名字为lhj的方向代理负载均衡server 192.168.30.13;
#服务端pc3地址server 192.168.30.14;
#服务端pc4地址
}
#子配置文件test.conf内容:
server {listen 80;
#监听所有80端口server_name www.lhj.com;
#创建虚拟主机www.lhj.com
location /{
proxy_pass http://lhj;
#访问反代的虚拟主机www.lhj.com则由反向代理负载均衡lhj来处理请求
}
}
⑨代理服务和服务端开启nginx服务,并在pc1客户端添加www.lhj.com的对应hosts文件进行测试
pc2、pc3、pc4执行:
systemctl start nginx
pc1执行:
sed -i '1a\192.168.30.12 www.lhj.com' /etc/hosts
#在/etc/hosts文件的第一行添加192.168.30.12 www.lhj.com内容
curl www.lhj.com
#多次使用访问反向代理服务器
得到内容
this is pc3
this is pc4的比例大概为1:1
相关文章:

Linux服务:Nginx反向代理与负载均衡
目录 一、Nginx反向代理 1、什么是代理 2、实现反向代理实验 ①实验拓扑 ②实验目的 ③实验过程 二、反向代理负载均衡 1、反向代理负载均衡调度算法 ①轮询算法 ②加权轮询算法 ③最小连接数算法 ④ip、url 哈希算法 ⑤响应时间fair算法 2、实现反向代理负载均…...

数据结构与算法——2.算法概述
这篇文章,我们来讲一下算法的概述,大致理解一下什么是算法。 目录 1.定义 2.生活实例 3.算法目标 4.实际案例 4.1案例一 4.2案例二 5.小结 1.定义 官方解释: 算法是指解题方案的准确而完整的描述,是一系列解决问题的清…...

BPMN2.0是什么,BPMN能解决企业流程管理中哪些问题?
一、前言: 在任何行业和企业中,一定存在着各式各样的流程,请假流程、报销流程、入职流程、离职流程、出差流程、合同审批流程、出入库流程等等…… 无论是管理者、技术人员还是业务人员,每天肯定也在使用各种流程,但…...
Java线程池的基本工作原理及案例
一、线程池的优点 线程池做的工作主要是控制运行的线程的数量,处理过程中将任务放入队列,然后在线程创建后启动这些任务,如果线程数量超过了最大数量超出数量的线程排队等候,等其它线程执行完毕,再从队列中取出任务来执行。 主要特点:线程复用;控制最大并发数;管理线程…...

Stacked hourglass networks for human pose estimation代码学习
Stacked hourglass networks for human pose estimation https://github.com/princeton-vl/pytorch_stacked_hourglass 这是一个用于人体姿态估计的模型,只能检测单个人 作者通过重复的bottom-up(高分辨率->低分辨率)和top-down࿰…...

SpringCloud(五)MQ消息队列
MQ概念常见消息模型helloworld案例实现实现spring AMQP发送消息实现spring AMQP接收消息工作消息队列实现发布订阅模型Fanout Exchange实现DirectExchange实现TopicExchange实现DirectExchange 和FanoutExchange的差异DirectExchange 和TopicExchange的差异基于RabbitListener注…...
SQL语法基础汇总
三年前的存稿 默认端口号 3306 超级用户名 root 登录 mysql -uroot -p / mysql -uroot -proot 退出 exit / quit 服务器版本 SELECT VERSION(); 当前日期 SELECT NOW(); 当前用户 SELECT USER(); 备份 mysqldump -uroot -p 数据库名称 > 保存的路径 还原 create database1-…...

惠普星14Pro电脑开机不了显示错误代码界面怎么办?
惠普星14Pro电脑开机不了显示错误代码界面怎么办?有用户电脑开机之后,进入了一个错误界面,里面有一些错误代码。重启电脑之后依然是无法进入到桌面中,那么这个情况怎么去进行解决呢?我们可以重装一个新系统,…...

顺序表的构造及功能
定义顺序表是一种随机存储都结构,其特点是表中的元素的逻辑顺序与物理顺序相同。假设线性表L存储起始位置为L(A),sizeof(ElemType)是每个数据元素所占的存储空间的大小,则线性表L所对应的顺序存储如下图。顺序表的优缺点优点:随机…...

cesium: 绘制线段(008)
第008个 点击查看专栏目录 本示例的目的是介绍如何在vue+cesium中绘制线段,左键点击开始绘制,右键点击取消绘制 直接复制下面的 vue+cesium源代码,操作2分钟即可运行实现效果. 文章目录 示例效果配置方式示例源代码(共139行)相关API参考:专栏目标示例效果 配置方式 1)…...

HTML、CSS学习笔记4(3D转换、动画)
目录 一、空间转换(3D转换) 1.空间位移 语法: 取值:(正负均可) 透视: 2.空间旋转 3.立体呈现 二、动画(animation) 1.动画的使用 先定义动画 再调用定义好的动画 …...
java的分布式锁
什么是分布式锁 分布式锁是指分布式环境下,系统部署在多个机器中,实现多进程分布式互斥的一种锁。为了保证多个进程能看到锁,锁被存在公共存储(比如 Redis、Memcache、数据库等三方存储中),以实现多个进程并…...

17- TensorFlow实现手写数字识别 (tensorflow系列) (项目十七)
项目要点 模型创建: model Sequential()添加卷积层: model.add(Dense(32, activationrelu, input_dim100)) # 第一层需要 input_dim添加dropout: model.add(Dropout(0.2))添加第二次网络: model.add(Dense(512, activationrelu)) # 除了first, 其他层不要输入shape添加输出…...

Polkadot 基础
Polkadot Polkadot联合并保护了一个不断增长的专业区块链生态系统,称为parachains。Polkadot上的应用程序和服务可以安全地跨链通信,形成真正可互操作的去中心化网络的基础。 真正的互操作性 Polkadot支持跨区块链传输任何类型的数据或资产,…...

spring源码编译
spring源码编译1、安装gradle2、拉取源码3、配置gradle文件来源及镜像仓库4、预编译5、验证6、可能遇到的报错6.1、jdk.jfr不存在6.2、checkstyleMain6.3、org.gradle.api.artifacts.result.ComponentSelectionReason.getDescription()Ljava/lang/String6.4、其他jdk࿱…...
防盗链是什么?带你了解什么是防盗链
目录 什么是防盗链 防盗链的定义 防盗链的产生 防盗链的实现 什么是防盗链 防盗链其实就是采用服务器端编程,通过url过滤技术实现的防止盗链的软件。 比如:photo.abc.com/video.mp4 这个下载地址,如果没有装防盗链,别人就能轻…...

Linux基础命令-fdisk管理磁盘分区表
文章目录 fdisk 命令介绍 命令格式 基本参数 1)常用参数 2)fdisk菜单操作说明 创建一个磁盘分区 1)创建分区 2)创建交换分区 参考实例 1) 显示当前分区的信息 2) 显示每个磁盘的分区信息 命令…...

(四)K8S 安装 Nginx Ingress Controller
ingress-nginx 是 Kubernetes 的入口控制器,使用NGINX作为反向代理和负载均衡器 版本介绍 版本1:Ingress NGINX Controller(k8s社区的ingres-nginx) 以 NGINX 开源技术为基础(kubernetes.io),可在GitHub的 kubernet…...
高频面试题
MyISAM和InnoDB是MySQL两种常见的存储引擎,它们之间有以下几点区别: 事务支持:MyISAM不支持事务处理,而InnoDB支持事务处理。 行级锁:MyISAM只支持表级锁,而InnoDB支持行级锁,可以避免并发访问…...
js 字节数组操作,TCP协议组装
js字节数组,进制转换js基础知识数组 Array扩展操作符三个点(...)ArrayBufferslice() 数组复制reduce 对数组中的每个元素执行一个提供的函数,将其结果汇总为单个返回值splice 数组删除,添加,替换js 字节数组转数字以及…...
论文解读:交大港大上海AI Lab开源论文 | 宇树机器人多姿态起立控制强化学习框架(二)
HoST框架核心实现方法详解 - 论文深度解读(第二部分) 《Learning Humanoid Standing-up Control across Diverse Postures》 系列文章: 论文深度解读 + 算法与代码分析(二) 作者机构: 上海AI Lab, 上海交通大学, 香港大学, 浙江大学, 香港中文大学 论文主题: 人形机器人…...

AI Agent与Agentic AI:原理、应用、挑战与未来展望
文章目录 一、引言二、AI Agent与Agentic AI的兴起2.1 技术契机与生态成熟2.2 Agent的定义与特征2.3 Agent的发展历程 三、AI Agent的核心技术栈解密3.1 感知模块代码示例:使用Python和OpenCV进行图像识别 3.2 认知与决策模块代码示例:使用OpenAI GPT-3进…...
【android bluetooth 框架分析 04】【bt-framework 层详解 1】【BluetoothProperties介绍】
1. BluetoothProperties介绍 libsysprop/srcs/android/sysprop/BluetoothProperties.sysprop BluetoothProperties.sysprop 是 Android AOSP 中的一种 系统属性定义文件(System Property Definition File),用于声明和管理 Bluetooth 模块相…...

SpringCloudGateway 自定义局部过滤器
场景: 将所有请求转化为同一路径请求(方便穿网配置)在请求头内标识原来路径,然后在将请求分发给不同服务 AllToOneGatewayFilterFactory import lombok.Getter; import lombok.Setter; import lombok.extern.slf4j.Slf4j; impor…...

GC1808高性能24位立体声音频ADC芯片解析
1. 芯片概述 GC1808是一款24位立体声音频模数转换器(ADC),支持8kHz~96kHz采样率,集成Δ-Σ调制器、数字抗混叠滤波器和高通滤波器,适用于高保真音频采集场景。 2. 核心特性 高精度:24位分辨率,…...

基于 TAPD 进行项目管理
起因 自己写了个小工具,仓库用的Github。之前在用markdown进行需求管理,现在随着功能的增加,感觉有点难以管理了,所以用TAPD这个工具进行需求、Bug管理。 操作流程 注册 TAPD,需要提供一个企业名新建一个项目&#…...

CVE-2020-17519源码分析与漏洞复现(Flink 任意文件读取)
漏洞概览 漏洞名称:Apache Flink REST API 任意文件读取漏洞CVE编号:CVE-2020-17519CVSS评分:7.5影响版本:Apache Flink 1.11.0、1.11.1、1.11.2修复版本:≥ 1.11.3 或 ≥ 1.12.0漏洞类型:路径遍历&#x…...

深入浅出深度学习基础:从感知机到全连接神经网络的核心原理与应用
文章目录 前言一、感知机 (Perceptron)1.1 基础介绍1.1.1 感知机是什么?1.1.2 感知机的工作原理 1.2 感知机的简单应用:基本逻辑门1.2.1 逻辑与 (Logic AND)1.2.2 逻辑或 (Logic OR)1.2.3 逻辑与非 (Logic NAND) 1.3 感知机的实现1.3.1 简单实现 (基于阈…...
MFE(微前端) Module Federation:Webpack.config.js文件中每个属性的含义解释
以Module Federation 插件详为例,Webpack.config.js它可能的配置和含义如下: 前言 Module Federation 的Webpack.config.js核心配置包括: name filename(定义应用标识) remotes(引用远程模块࿰…...
k8s从入门到放弃之HPA控制器
k8s从入门到放弃之HPA控制器 Kubernetes中的Horizontal Pod Autoscaler (HPA)控制器是一种用于自动扩展部署、副本集或复制控制器中Pod数量的机制。它可以根据观察到的CPU利用率(或其他自定义指标)来调整这些对象的规模,从而帮助应用程序在负…...