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 字节数组转数字以及…...
【大模型RAG】拍照搜题技术架构速览:三层管道、两级检索、兜底大模型
摘要 拍照搜题系统采用“三层管道(多模态 OCR → 语义检索 → 答案渲染)、两级检索(倒排 BM25 向量 HNSW)并以大语言模型兜底”的整体框架: 多模态 OCR 层 将题目图片经过超分、去噪、倾斜校正后,分别用…...
椭圆曲线密码学(ECC)
一、ECC算法概述 椭圆曲线密码学(Elliptic Curve Cryptography)是基于椭圆曲线数学理论的公钥密码系统,由Neal Koblitz和Victor Miller在1985年独立提出。相比RSA,ECC在相同安全强度下密钥更短(256位ECC ≈ 3072位RSA…...
Zustand 状态管理库:极简而强大的解决方案
Zustand 是一个轻量级、快速和可扩展的状态管理库,特别适合 React 应用。它以简洁的 API 和高效的性能解决了 Redux 等状态管理方案中的繁琐问题。 核心优势对比 基本使用指南 1. 创建 Store // store.js import create from zustandconst useStore create((set)…...
黑马Mybatis
Mybatis 表现层:页面展示 业务层:逻辑处理 持久层:持久数据化保存 在这里插入图片描述 Mybatis快速入门 (TCP的连接管理、可靠性、面临复杂网络的处理)
目录 1.TCP的连接管理机制(1)三次握手①握手过程②对握手过程的理解 (2)四次挥手(3)握手和挥手的触发(4)状态切换①挥手过程中状态的切换②握手过程中状态的切换 2.TCP的可靠性&…...
c++ 面试题(1)-----深度优先搜索(DFS)实现
操作系统:ubuntu22.04 IDE:Visual Studio Code 编程语言:C11 题目描述 地上有一个 m 行 n 列的方格,从坐标 [0,0] 起始。一个机器人可以从某一格移动到上下左右四个格子,但不能进入行坐标和列坐标的数位之和大于 k 的格子。 例…...
高等数学(下)题型笔记(八)空间解析几何与向量代数
目录 0 前言 1 向量的点乘 1.1 基本公式 1.2 例题 2 向量的叉乘 2.1 基础知识 2.2 例题 3 空间平面方程 3.1 基础知识 3.2 例题 4 空间直线方程 4.1 基础知识 4.2 例题 5 旋转曲面及其方程 5.1 基础知识 5.2 例题 6 空间曲面的法线与切平面 6.1 基础知识 6.2…...
JavaScript 数据类型详解
JavaScript 数据类型详解 JavaScript 数据类型分为 原始类型(Primitive) 和 对象类型(Object) 两大类,共 8 种(ES11): 一、原始类型(7种) 1. undefined 定…...
解析奥地利 XARION激光超声检测系统:无膜光学麦克风 + 无耦合剂的技术协同优势及多元应用
在工业制造领域,无损检测(NDT)的精度与效率直接影响产品质量与生产安全。奥地利 XARION开发的激光超声精密检测系统,以非接触式光学麦克风技术为核心,打破传统检测瓶颈,为半导体、航空航天、汽车制造等行业提供了高灵敏…...
