Linux服务:Nginx反向代理与负载均衡

news2024/11/17 10:05:02

目录

一、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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/375359.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

Batchnorm和Layernorm的区别

在深度学习训练中,我们经常会遇到这两个归一化操作,他们之间有什么区别呢?我们来简单介绍一下: BatchNorm: 在深度学习训练的时候我们的数据如果没有经过预处理,有可能会出现梯度消失或者梯度爆炸的情况&…

aspnetcore-browser-refresh.js和Visual Studio Browser Link

我在调试ASP.NET Core web应用时,发现请求的页面文档底部多了一部分文件,而在我的页面中却没有包含,故查询资料,在此记录: 图中,可以看到红框部分是多出来了2个脚本 1.aspnetcore-browser-refresh.js 这里…

LeetCode HOT100 (23、32、33)

目录 23、合并K个升序链表 32、最长有效括号 33、搜索旋转排序数组 23、合并K个升序链表 思路:采用顺序合并的方法,用一个变量 ans 来维护以及合并的链表,第 i 次循i 个链表和 ans合并,答案保存到 ans中。 代码: …

数据存储结构B+树 vs LSM Tree

关于存储的几个概念对于一个存储系统来说,底层的存储结构基本上就决定了这个存储系统的功能,或者说性能偏向。比如使用B树的存储系统,那就是查询友好的;使用倒排索引结构的,那就主要是用来做全文搜索的;使用…

idea debug elasticsearch8.6.2 源码

前置依赖: gradle 7.5.1:Gradle | Releases openJDK 17:https://download.oracle.com/java/17/latest/jdk-17_windows-x64_bin.exe idea:IntelliJ IDEA 2022.1 (Ultimate Edition) 1、下载源码 8.6.2 zip包 并解压 地址&…

算法训练营 day57 动态规划 最长公共子序列 不相交的线 最大子序和(动态规划)

算法训练营 day57 动态规划 最长公共子序列 不相交的线 最大子序和(动态规划) 最长公共子序列 1143. 最长公共子序列 - 力扣(LeetCode) 给定两个字符串 text1 和 text2,返回这两个字符串的最长 公共子序列 的长度。…

spark为什么比hadoop快

网上一堆人根本对计算框架一知半解就出来糊弄人,常见解答有: spark是基于内存计算,所以快。这跟废话似的,mr计算的时候不也是基于内存? mr shuffle落盘。这也是胡扯, spark shuffle不落盘? 实际…

智能家居Homekit系列一智能灯泡

一、什么是智能灯 传统的灯泡是通过手动打开和关闭开关来工作。有时,它们可以通过声控、触控、红外等方式进行控制,或者带有调光开关,让用户调暗或调亮灯光。 智能灯泡内置有芯片和通信模块,可与手机、家庭智能助手、或其他智能…

[C++]string类模拟实现

目录 前言: 1. string框架构造 2. 默认函数 2.1 构造函数 2.2 析构函数 2.3 拷贝构造 2.4 赋值重载 3. 迭代器 4. 整体程序 前言: 本篇文章模拟实现了C中string的部分功能,有助于大家了解和熟悉string类,虽然这个类不难实…

SSM知识快速复习

SSM知识快速复习SpringIOCDIIOC容器在Spring中的实现常用注解Autowired注解的原理AOP相关术语作用动态代理实现原理事务Transactional事务属性:只读事务属性:超时事务属性:回滚策略事务属性:事务隔离级别事务属性:事务…

JSP+ACCESS网上拍卖平台系统

技术:Java、JSP等摘要:电子商务就是通过互联网来进行的各项商务活动,包括广告、交易、支付、服务等活动。电子商务源于英文Electronic Commerce,简写为EC或E-Commerce。它是人类社会、经济、科学、文化发展的必然产物,是信息化社会…

【计算机考研408】置换选择排序 + 代码 PAT 甲级 1171 Replacement Selection

王道-置换选择排序b站教学视频 置换选择排序的流程 图片比文字更好理解,故不加文字解释 当当前工作区已经满了并且找不到合适的放入当前归并段的元素的时候,开始生成下一个归并段。 此后重复上述过程。 计算机考研可能考察置换选择排序的知识点 …

网易蜗牛读书产品体验报告(1.9.6版本)

本文导览本文是网易蜗牛读书的产品体验报告,在移动阅读市场,网易蜗牛读书以其独特的深度阅读和领读人的阅读机制吸引了一大批的阅读爱好者和忠实用户。本文通过对网易蜗牛读书的体验分析,希望进一步加深对网易蜗牛读书产品的认识了解。产品概…

详细的IO面试题汇总

IO 流简介 IO 即 Input/Output,输入和输出。数据输入到计算机内存的过程即输入,反之输出到外部存储(比如数据库,文件,远程主机)的过程即输出。数据传输过程类似于水流,因此称为 IO 流。IO 流在…

pom依赖产生的各种问题

文章目录问题一(org.apache.ibatis.session.Configuration)解决方法问题二(ERROR StatusLogger No log4j2)解决方法问题三(com.google.common.util.concurrent)解决方法问题四(start bean documentationPluginsBootstrapper)解决方法问题五(Unable to infer base url. )解决办法…

(01)Unity 中使用 HDRP

概述Unity在2019.2版本中推出HDRP(高清渲染管线),目的是为了提高图形质量,实现从照片写实到风格化的图像。先看一下官方对HDRP的概述:高清渲染管线 (HDRP) 是由 Unity 构建的高保真脚本化渲染管…

【golang/go语言】Go语言之反射

本文参考了李文周的博客——Go语言基础之反射。 一、反射初识 1. 什么是反射 在计算机科学中,反射是指计算机程序在运行时(run time)可以访问、检测和修改它本身状态和行为的一种能力。用比喻来说,反射就是程序在运行的时候能够…

【genius_platform软件平台开发】第八十八讲:arm公司的V架构和内核发展史(整理)

1. ARM公司简介 ARM(Advanced RISC Machines)有三种含义:它是一个公司的名称、它是一类微处理器的通称、它是一种技术的名称。 ARM 公司是微处理器行业的一家知名企业,它是知识产权供应商,设计基于ARM体系的处理器&a…

5-Azidopentanoic acid,79583-98-5,5-Azidopentanoic COOH具有高效稳定,高特异性

5-Azidopentanoic acid,5-Azidopentanoic COOH,5-叠氮基戊酸产品规格:1.CAS号:79583-98-52.分子式:C5H9N3O23.分子量:143.074.包装规格:1g,5g,10g,包装灵活&a…

Spring Data JPA 之 理解 Persistence Context 的核心概念

21 理解 Persistence Context 的核心概念 21.1 Persistence Context 相关核心概念 21.1.1 EntityManagerFactory 和 Persistence Unit 按照 JPA 协议⾥⾯的定义:persistence unit 是⼀些持久化配置的集合,⾥⾯包含了数据源的配置、EntityManagerFacto…