当前位置: 首页 > news >正文

“深入理解Nginx的负载均衡与动静分离“

目录

  • 引言
  • 一、Nginx简介
    • 1. Nginx的基本概念
    • 2. Nginx的特点
    • 3. Nginx的安装配置
  • 二、Nginx搭载负载均衡
  • 三、前端项目打包
  • 四、Nginx部署前后端分离项目,同时实现负载均衡和动静分离
  • 总结

在这里插入图片描述

引言

在现代互联网应用中,高性能和可扩展性是至关重要的。Nginx作为一款高性能的Web服务器和反向代理服务器,被广泛应用于各种规模的网站和应用程序中。本文将深入探讨Nginx的负载均衡和动静分离的原理与实践,帮助读者更好地理解和应用这些功能。

一、Nginx简介

Nginx是一款轻量级的高性能Web服务器和反向代理服务器,由俄罗斯的工程师Igor Sysoev开发。它采用事件驱动的异步非阻塞架构,能够处理大量并发连接,具有出色的性能和稳定性。本节将介绍Nginx的基本概念、特点和安装配置方法。

  • 负载均衡

在这里插入图片描述

  • 动静分离
    在这里插入图片描述

1. Nginx的基本概念

Nginx采用模块化的设计,核心模块负责处理HTTP请求和响应,而其他模块则提供了丰富的功能扩展,如负载均衡、动静分离、反向代理等。在理解Nginx的负载均衡和动静分离之前,我们需要了解一些基本概念,如虚拟主机、反向代理和上游服务器等。

2. Nginx的特点

Nginx具有以下几个显著的特点:

  • 高性能:采用异步非阻塞的事件驱动模型,能够处理大量并发连接,适用于高负载的场景。
  • 轻量级:占用系统资源少,启动速度快,适合部署在资源有限的环境中。
  • 可扩展性:支持模块化设计,可以根据需求选择性地加载和配置各种功能模块。
  • 稳定性:经过多年的生产环境验证,稳定性得到了广泛认可。

3. Nginx的安装配置

  1. 去到Nginx压缩包目录下, 我的是(javayh/software) 输入(yum -y install gcc zlib zlib-devel pcre-devel openssl openssl-devel)回车 下载4个依赖先

  2. 解压Nginx压缩包 输入(tar -xvf nginx-1.13.7.tar.gz)回车 解压Nginx

  3. 然后 cd nginx-1.13.7 回车进入目标文件

  4. 编译,执行配置: 考虑到后续安装ssl证书 添加两个模块,输入(./configure --with-http_stub_status_module --with-http_ssl_module)回车

  5. 安装 输入(make && make install)回车

  6. 然后下一步如图所示在这里插入图片描述

  7. 然后cd sbin/ 回车进入sbin 然后输入./nginx回车启动

  8. 然后下载一个lsof 输入(yum install -y lsof)回车

  9. 输入(lsof -i:80)回车查看在这里插入图片描述

  10. 设置防火墙开放 80 端口
    输入(firewall-cmd --zone=public --add-port=80/tcp --permanent)回车开放
    输入( firewall-cmd --reload && firewall-cmd --list-port )回车刷新并展示在这里插入图片描述
    在这里插入图片描述
    能访问此时Nginx服务就启动成功了

二、Nginx搭载负载均衡

负载均衡是指将请求分发到多个服务器上,以达到提高系统性能和可用性的目的。Nginx作为一款高性能的反向代理服务器,具备强大的负载均衡功能。本节将介绍Nginx的负载均衡原理和常用的负载均衡算法,并结合实例演示如何配置和使用Nginx进行负载均衡。

继上面十步后实现负载均衡

  1. 首先防火墙需要再开端口
    输入(firewall-cmd --zone=public --add-port=8081/tcp --permanent)回车开放
    输入( firewall-cmd --reload && firewall-cmd --list-port )回车刷新并展示
    在这里插入图片描述
    此时就有三个端口了

  2. 这一步是我要删除我Tomcat之前所存在的项目
    在这里插入图片描述

  3. 然后回到software文件下面,输入(cp -r apache-tomcat-8.5.20/ apache-tomcat-8.5.20_8081/)回车就会多一个Tomcat服务器
    在这里插入图片描述

  4. 然后该新的Tomcat的端口配置,如下进入目录
    在这里插入图片描述
    回车进入后把所有的端口号都改一下,改为之后退出
    为了方便区别,我把(/javayh/software/apache-tomcat-8.5.20_8081/webapps/ROOT/)中的index界面改了,在远程连接上改的,也可以自己手动改

  5. 然后把两个Tomcat服务启动
    在这里插入图片描述
    现在先去访问看能不能成功
    在这里插入图片描述
    在这里插入图片描述
    这边可以看到两个都启动成功了

  6. 下一步要负载Tomcat,根据以下操作进入目标目录找到这个配置文件
    在这里插入图片描述

  7. 然后进入nginx.conf编辑配置,以下是我编辑的两个地方

   #服务器的集群upstream  tomcat_list {  #服务器集群名字server    127.0.0.1:8080  weight=1;   #服务器1   weight是权重的意思,权重越大,分配的概率越大。server    127.0.0.1:8081  weight=3; #服务器2   weight是权重的意思,权重越大,分配的概率越大} location / {#root   html;proxy_pass   http://tomcat_list;index  index.html index.htm;}
  1. 然后重启nginx进入该目录
    在这里插入图片描述
    然后输入(./nginx -s reload)回车重启
    此时负载均衡就搭配完成了

  2. 此时在两个Tomcat中进行部署项目
    在这里插入图片描述
    部署完成后把两个服务器重启
    在这里插入图片描述
    在这里插入图片描述
    有数据说明成功了

三、前端项目打包

  1. 打包前要确定项目能正常运行且没有问题
  2. 进行打包前要改一下项目的配置
  3. 进到前台项目的config中的index.js中修改build中的内容(修改的在最后一行)
 build: {// Template for index.htmlindex: path.resolve(__dirname, '../dist/index.html'),// PathsassetsRoot: path.resolve(__dirname, '../dist'),assetsSubDirectory: 'static',// assetsPublicPath: '/',修改前assetsPublicPath: './',//修改后
  1. 还要修改build文件夹中utils.js中的(添加一行 publicPath:‘…/…/’)
 if (options.extract) {return ExtractTextPlugin.extract({use: loaders,fallback: 'vue-style-loader',// 解决icon路径加载错误publicPath:'../../'})} else {return ['vue-style-loader'].concat(loaders)}}
  1. 改好之后就去本地文件夹下找到本项目的下一级cmd回车后在黑窗口输入npm run build

在这里插入图片描述
这样就打包好了
在这里插入图片描述
这个就是打包好的前台项目

四、Nginx部署前后端分离项目,同时实现负载均衡和动静分离

  1. 去到/usr/local/nginx/conf/的nginx.conf里进行编辑在这里插入图片描述

  2. 建一个mypro文件夹
    在这里插入图片描述

  3. 然后把前端所打包好的zip压缩包拖进去然后进入该文件夹目录

  4. 下载解压 unzip在这里插入图片描述

  5. 然后解压,输入 unzip dist.zip
    在这里插入图片描述
    此时解压完成,现在部署

  6. 这是我编辑的nginx.conf,后面那个是添加的( location ^~/api/)

location / {root   /usr/local/mypro/dist;#proxy_pass   http://tomcat_list;index  index.html index.htm;}location  ^~/api/ {proxy_pass http://tomcat_list/;}  
  1. 然后刷新,如下进入目标目录(输入 [ ./nginx -s reload] 回车)
    在这里插入图片描述
    访问发送请求的时候会有问题,所以
    在这里插入图片描述

  2. win+r 输入(C:\Windows\System32\drivers\etc)回车编辑hosts 添加(192.168.238.129 localhost)

成功
在这里插入图片描述

总结

本文深入探讨了Nginx的负载均衡和动静分离的原理与实践。通过对Nginx的基本概念、特点和安装配置的介绍,读者可以更好地理解Nginx的工作原理和使用方法。同时,通过对负载均衡和动静分离的详细讲解和实例演示,读者可以掌握如何使用Nginx提高系统的性能和可扩展性。希望本文对读者在实际应用中有所帮助。

相关文章:

“深入理解Nginx的负载均衡与动静分离“

目录 引言一、Nginx简介1. Nginx的基本概念2. Nginx的特点3. Nginx的安装配置 二、Nginx搭载负载均衡三、前端项目打包四、Nginx部署前后端分离项目,同时实现负载均衡和动静分离总结 引言 在现代互联网应用中,高性能和可扩展性是至关重要的。Nginx作为一…...

JVM 内存和 GC 算法

文章目录 内存布局直接内存执行引擎解释器JIT 即时编译器JIT 分类AOT 静态提前编译器(Ahead Of Time Compiler) GC什么是垃圾为什么要GC垃圾回收行为Java GC 主要关注的区域对象的 finalization 机制GC 相关算法引用计数算法(Reference Count…...

memtest86 prosite v10.6

passmark官方的memtest86 v10开始支持颗粒级别的坏内存芯片定位了,对于特定的若干种CPU和芯片组的组合,支持这项功能。 当然支持颗粒定位的site版本售价4800美金,是比较贵的。所以网络上出现了破解版的,人才真是。但是鼓励大家支…...

Springboot JSP项目如何以war、jar方式运行

文章目录 一,序二,样例代码1,代码结构2,完整代码备份 三,准备工作1. pom.xml 引入组件2. application.yml 指定jsp配置 四,war方式运行1. 修改pom.xml文件2. mvn执行打包 五,jar方式运行1. 修改…...

系统架构设计师(第二版)学习笔记----层次式架构设计理论与实践

【原文链接】系统架构设计师(第二版)学习笔记----层次式架构设计理论与实践 文章目录 一、层次式体系结构概述1.1 软件体系结构的作用1.2 常用的层次式架构图1.3 层次式体系可能存在的问题点 二、表现层框架设计2.1 MVC模式2.1.1 MVC三层模式2.1.2 MVC设…...

Python之字符串详解

目录 一、字符串1、转义字符与原始字符串2、使用%运算符进行格式化 一、字符串 在Python中,字符串属于不可变、有序序列,使用单引号、双引号、三单引号或三双引号作为定界符,并且不同的定界符之间可以互相嵌套。 ‘abc’、‘123’、‘中国’…...

《视觉SLAM十四讲》-- 概述与预备知识

文章目录 01 概述与预备知识1.1 SLAM 是什么1.1.1 基本概念1.1.2 视觉 SLAM 框架1.1.3 SLAM 问题的数学表述 1.2 实践:编程基基础1.3 课后习题 01 概述与预备知识 1.1 SLAM 是什么 1.1.1 基本概念 (1)SLAM 是 Simultaneous Localization a…...

Java8 Stream API全面解析——高效流式编程的秘诀

文章目录 什么是 Stream Api?快速入门流的操作创建流中间操作filter 过滤map 数据转换flatMap 合并流distinct 去重sorted 排序limit 限流skip 跳过peek 操作 终结操作forEach 遍历forEachOrdered 有序遍历count 统计数量min 最小值max 最大值reduce 聚合collect 收集anyMatch…...

分享一下微信小程序里怎么开店

如何在微信小程序中成功开店:从选品到运营的全方位指南 一、引言 随着微信小程序的日益普及,越来越多的人开始尝试在微信小程序中开设自己的店铺。微信小程序具有便捷、易用、即用即走等特点,使得开店门槛大大降低。本文将详细介绍如何在微…...

uniapp小程序刮刮乐抽奖

使用canvas画布画出刮刮乐要被刮的图片&#xff0c;使用移动清除画布。 当前代码封装为刮刮乐的组件&#xff1b; vue代码&#xff1a; <template><view class"page" v-if"merchantInfo.cdn_static"><image class"bg" :src&q…...

Qt 窗口无法移出屏幕

1 使用场景 设计一个缩进/展开widget的效果&#xff0c;抽屉效果。 看到实现的方法有定时器里move窗口&#xff0c;或是使用QPropertyAnimation。 setWindowFlags(Qt::Dialog | Qt::FramelessWindowHint |Qt::X11BypassWindowManagerHint&#xff09;&#xff1b; 记得在移…...

java毕业设计基于springboot+vue线上教学辅助系统

项目介绍 本论文主要论述了如何使用JAVA语言开发一个线上教学辅助系统 &#xff0c;本系统将严格按照软件开发流程进行各个阶段的工作&#xff0c;采用B/S架构&#xff0c;面向对象编程思想进行项目开发。在引言中&#xff0c;作者将论述线上教学辅助系统的当前背景以及系统开…...

开源 Wiki 软件 wiki.js

wiki.js简介 最强大、 可扩展的开源Wiki 软件。使用 Wiki.js 美观直观的界面让编写文档成为一种乐趣&#xff01;根据 AGPL-v3 许可证发布。 官方网站&#xff1a;https://js.wiki/ 项目地址&#xff1a;https://github.com/requarks/wiki 主要特性&#xff1a; 随处安装&a…...

STM32基本定时器中断

提示&#xff1a;文章写完后&#xff0c;目录可以自动生成&#xff0c;如何生成可参考右边的帮助文档 文章目录 前言一、STM32定时器的结构&#xff1f;1. 51定时器的结构1.1如何实现定时1s的功能&#xff1f; 2. stm32定时器的结构2.1 通用定时器 二、使用步骤1.开启时钟2.初始…...

学习历程_基础_精通部分_达到手搓的程度

1. 计算机网络(更新版) 1.1 计算机网络-43题 1.2 2. 操作系统(更新版) 3. ACM算法(更新版) 4. 数据库&#xff08;更新版&#xff09; 5. 业务开发算法&#xff08;更新版&#xff09; 6. 分布式类&#xff08;更新版&#xff09; 7. 设计模式&#xff08;更新版&#xff…...

Redis中的List类型

目录 List类型的命令 lpush lpushx rpush lrange lpop rpop lindex linsert llen lrem ltrim lset 阻塞命令 阻塞命令的使用场景 1.针对一个非空的列表进行操作 2.针对一个空的列表进行操作 3.针对多个key进行操作. 内部编码 lisi类型的应用场景 存储(班级…...

3D模型格式转换工具HOOPS Exchange:如何将3D PDF转换为STEP格式?

3D CAD数据在制造、工程和设计等各个领域都扮演着重要的角色。为了促进不同软件应用程序之间的协作和互操作性&#xff0c;它通常以不同的格式进行交换。 HOOPS Exchange是一个强大的软件开发工具包&#xff0c;提供了处理和将3D CAD数据从一种格式转换为另一种格式的解决方案…...

DB-GPT介绍

DB-GPT介绍 引言DB-GPT项目简介DB-GPT架构关键特性私域问答&数据处理多数据源&可视化自动化微调Multi-Agents&Plugins多模型支持与管理隐私安全支持数据源 子模块DB-GPT-Hub微调参考文献 引言 随着数据量的不断增长和数据分析的需求日益增多&#xff0c;将自然语言…...

Java,面向对象,内部类

内部类的定义&#xff1a; 将一个类A定义在另一个类B里面&#xff0c;里面的那个类A就称为内部类&#xff08;InnerClass&#xff09;&#xff0c;类B则称为外部类&#xff08;OuterClass&#xff09;。 内部类的使用场景: 类A只在类B中使用&#xff0c;便可以使用内部类的方法…...

唯一ID如何生成,介绍一下目前技术领域最常使用的几种方法

纵使十面大山&#xff0c;又如何&#xff0c;无妨… 概述 唯一ID&#xff08;Unique Identifier&#xff09;是在计算机科学和信息技术领域中用于标识某个实体或数据的唯一标识符。生成唯一ID的方法可以根据具体需求和应用场景的不同而有所不同。以下是一些目前技术领域中常用…...

STM32 SRAM调试实战与优化技巧

1. STM32 SRAM调试实战指南在嵌入式开发中&#xff0c;我们通常将程序烧录到Flash中运行。但当你需要快速验证代码、调试硬件问题或进行临时测试时&#xff0c;使用STM32内部SRAM运行程序会是个高效的选择。我最近在调试一个LED控制程序时&#xff0c;就采用了SRAM运行的方式&a…...

终极Windows风扇控制解决方案:FanControl如何让你的电脑既安静又高效

终极Windows风扇控制解决方案&#xff1a;FanControl如何让你的电脑既安静又高效 【免费下载链接】FanControl.Releases This is the release repository for Fan Control, a highly customizable fan controlling software for Windows. 项目地址: https://gitcode.com/GitH…...

Linux 内核中的内存映射:从虚拟地址到物理地址

Linux 内核中的内存映射&#xff1a;从虚拟地址到物理地址 引言 作为一名深耕操作系统和嵌入式开发的工程师&#xff0c;我深知地址管理的重要性。在系统开发中&#xff0c;合理的地址管理可以提高系统的效率和安全性。在 Linux 内核中&#xff0c;内存映射是实现虚拟地址到物理…...

光模块技术解析:从封装到以太网标准的全面指南

1. 光模块的封装类型与演进 第一次拆开数据中心机柜时&#xff0c;我看到那些花花绿绿的光模块插在交换机上&#xff0c;像极了乐高积木。后来才知道&#xff0c;这些"积木"的形态差异背后是封装技术的迭代史。目前主流的光模块封装类型可以分成三代产品&#xff1a;…...

别再只用Whisper了!WhisperX + Python 实战:如何为3分钟视频批量ASR搭建高效处理流水线

WhisperX Python 实战&#xff1a;构建高吞吐量语音识别流水线的工程实践 在音视频内容爆炸式增长的时代&#xff0c;语音识别技术已成为内容生产、知识管理、数字营销等领域的基础设施。当处理规模从单个文件扩展到数百小时的音视频素材时&#xff0c;传统单次处理模式显露出…...

别再只用labelme了!用ENVI 5.3的ROI工具给遥感影像打标签,效率翻倍

遥感影像标注革命&#xff1a;ENVI 5.3 ROI工具如何让深度学习标签制作效率提升300% 当无人机航拍的高清影像铺满整个屏幕&#xff0c;标注员的手指在鼠标和键盘间机械重复着点击、拖拽、保存的动作——这是许多刚接触遥感影像深度学习的研究者再熟悉不过的场景。传统标注工具在…...

数字工作流革命:Input Leap如何重塑你的多设备生产力体验

数字工作流革命&#xff1a;Input Leap如何重塑你的多设备生产力体验 【免费下载链接】input-leap Open-source KVM software 项目地址: https://gitcode.com/gh_mirrors/in/input-leap 想象一下这样的场景&#xff1a;你的左手边是Windows台式机处理着复杂的3D渲染&…...

告别发热!用TPS54360改造你的LM317线性电源(效率提升300%)

告别发热&#xff01;用TPS54360改造你的LM317线性电源&#xff08;效率提升300%&#xff09; 在电子设计领域&#xff0c;线性稳压电源因其简单可靠而广受欢迎&#xff0c;但效率低下导致的发热问题始终困扰着工程师们。以LM317为代表的经典线性稳压器&#xff0c;在输入输出电…...

AI辅助开发智能车:让快马平台优化你的图像处理与识别算法

最近在准备智能车竞赛&#xff0c;遇到了一个头疼的问题&#xff1a;摄像头采集的图像受环境光影响太大&#xff0c;导致巡线识别不稳定。特别是在弯道和阴影区域&#xff0c;传统固定阈值的二值化方法完全失效。经过反复尝试&#xff0c;发现用InsCode(快马)平台的AI辅助开发功…...

思考时爱用手托腮?警惕单侧发力拖垮颈肩平衡

很多人在工作、学习或思考时&#xff0c;习惯用手托腮&#xff0c;这个看似不经意的动作&#xff0c;会给颈肩带来持续负担&#xff0c;引发肌肉失衡劳损。用手托腮时&#xff0c;头部会向一侧倾斜&#xff0c;颈椎处于侧屈状态&#xff0c;颈部一侧肌肉持续紧张、牵拉&#xf…...