nginx负载均衡(轮询与权重)

news2024/9/27 9:19:51

文章目录

  • 1. nginx的介绍
  • 2. nginx使用场景
  • 3. nginx在windows的下载与安装
  • 4. nginx的简单使用
  • 5. nginx进行轮询测试
  • 6. nginx进行权重测试
  • 7. 总结

1. nginx的介绍

Nginx(engine x)是一个高性能的HTTP和反向代理web服务器,同时也是一个开源的、高性能的HTTP和反向代理服务器、IMAP/POP3/SMTP代理服务器。它最初由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点开发,并以类BSD许可证的形式发布。Nginx因其稳定性、丰富的功能集、简单的配置文件和低系统资源消耗而闻名。以下是Nginx的主要特点和用途:

主要特点

  • 高性能:Nginx采用异步非阻塞的事件处理模型,能够处理高并发连接,支持高达50,000个并发连接数。
  • 轻量级:Nginx具有轻量级的设计,占用的内存和CPU资源相对较少。
  • 高可靠性:Nginx提供了丰富的错误处理机制,能够在高负载下稳定运行。
  • 高度模块化:Nginx的设计高度模块化,模块编写简单,易于扩展和定制。
  • 配置简单:Nginx的配置文件结构清晰,采用嵌套块结构,易于理解和维护。

主要用途

  • Web服务器:Nginx可以作为独立的Web服务器,处理HTTP请求并返回响应。
  • 反向代理:Nginx可以作为反向代理服务器,将客户端的请求转发到后端的应用服务器,隐藏真实的后端服务器,提升安全性和性能。
  • 负载均衡:Nginx支持多种负载均衡算法,如轮询、最小连接数等,可以将请求均衡地分发到多个后端服务器上,提高系统的整体性能和可用性。
  • 邮件代理:Nginx支持IMAP、POP3和SMTP协议,可以作为邮件代理服务器,路由、过滤和传递电子邮件。
  • 动态内容服务:Nginx可以与各种后端应用服务器集成,如PHP、Node.js、Python等,实现动态内容的处理和传递。
  • HTTPS服务:Nginx支持SSL/TLS协议,可以提供安全的HTTPS服务,保护用户数据在传输过程中的安全。
  • 缓存加速:Nginx可以使用内存、硬盘或SSD等作为缓存存储空间,缓存静态内容和动态内容,减少服务器的负载,提高网站的访问速度。

2. nginx使用场景

Nginx作为一款高性能的HTTP和反向代理web服务器,其使用场景非常广泛。以下是Nginx的主要使用场景

  1. 静态文件服务
    概述:Nginx在提供静态资源服务方面效率很高,可以快速响应大量的静态请求,如CSS、JavaScript、图片、视频等文件,从而减轻其他动态服务器的负担。
    优势:Nginx对静态文件的处理非常高效,因为它直接从磁盘读取文件并通过网络发送给客户端,无需经过复杂的处理流程。
  2. 反向代理和负载均衡
    反向代理:Nginx可以作为反向代理服务器,将客户端的请求转发到后端的应用服务器上,并返回处理结果给客户端。这种机制隐藏了真实的后端服务器,提高了系统的安全性。
    负载均衡:Nginx支持多种负载均衡算法,如轮询、最少连接数、IP哈希等,可以根据后端服务器的负载情况动态地分配请求,提高系统的整体性能和可用性。
  3. 缓存服务器
    概述:Nginx可以配置为缓存服务器,缓存一些响应结果,如静态文件、数据库查询结果等,以减少对后端服务器的请求次数,降低后端服务器的负载,提高数据的访问速度。
    优势:缓存机制可以显著提高网站的访问速度,尤其是在高并发场景下,能够有效缓解后端服务器的压力。
  4. SSL加速
    概述:Nginx支持HTTPS协议,可以通过SSL/TLS加密技术保护数据传输的安全性。同时,Nginx还提供了SSL加速功能,可以提高HTTPS访问的性能,减少SSL负载压力。
    优势:SSL加速功能使得Nginx在处理HTTPS请求时更加高效,能够为用户提供更加安全的访问体验。
  5. WebSocket支持
    概述:Nginx也支持WebSocket协议,可以用于实现实时通信应用程序。WebSocket协议允许服务器和客户端之间建立持久连接,并通过该连接进行双向通信。
    应用:WebSocket在实时通信、在线游戏、实时数据推送等领域有广泛的应用。
  6. 访问控制和安全
    概述:Nginx提供了丰富的访问控制功能,如基于IP地址的访问限制、基于用户名的认证等,可以有效保护Web应用程序和服务器的安全。
    优势:通过合理的访问控制策略,Nginx可以防止非法访问和恶意攻击,提高系统的安全性。
  7. 动静分离
    概述:为了提高网站的解析速度和降低服务器的压力,Nginx可以实现动静分离。即将动态页面和静态页面由不同的服务器解析,或者通过Nginx将动态请求和静态请求分开处理。
    优势:动静分离可以显著提高网站的访问速度和系统的整体性能。

3. nginx在windows的下载与安装

nginx下载
在这里插入图片描述
下载下来,直接本地解压就行了
在这里插入图片描述
启动后可能会闪退,很正常,打开任务管理器,这里存在就说明启动了
在这里插入图片描述
访问localhost:80就可以了
在这里插入图片描述

4. nginx的简单使用

打开nginx目录中的html我们创建两个文件夹,然后在其中创建index.html

在这里插入图片描述
在这里插入图片描述
one中的index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>One</title>
</head>
<body>
    <h1>one!!!!</h1>
</body>
</html>

two中的index.html

<!DOCTYPE html>
<html lang="en">
<head>
    <meta charset="UTF-8">
    <meta name="viewport" content="width=device-width, initial-scale=1.0">
    <title>Two</title>
</head>
<body>
    <h1>two!!!!</h1>
</body>
</html>

打开nginx中conf文件夹下的nginx.conf配置一下(加上就行)

server {
    listen  8098;
     server_name  localhost;
     location / {
         root   html/one;
         index  index.html index.htm;
     }
 }
 server {
     listen  8097;
     server_name  localhost;
     location / {
         root   html/two;
         index  index.html index.htm;
     }
 }

随后就能访问了
在这里插入图片描述
在这里插入图片描述

5. nginx进行轮询测试

我们在nginx.conf中添加其他语句

upstream  backServer{
    server 127.0.0.1:8098;
    server 127.0.0.1:8097;
}
server {
    listen  8088;
    server_name  localhost;
    location / {
        proxy_pass http://backServer;
    }
}

重启nginx
在任务管理器里面结束nginx的任务,再启动
然后我们访问localhost:8088
一直刷新一下就会看到,两个界面进行轮流访问!!!

6. nginx进行权重测试

修改配置,其他不变

upstream  backServer{
    server 127.0.0.1:8098 weight=2;
    server 127.0.0.1:8097 weight=1;
}

再次重启
进行访问localhost:8088
我们会发现one界面的访问概率比two界面更高

7. 总结

我们简单学习了一下nginx的windows安装和简单的轮询与负载的使用。

欢迎批评指正!!!!


在这里插入图片描述

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

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

相关文章

PASCAL VOC数据集语义分割:解决标签值错误与数据增强不同步问题的优化方案

创作不易&#xff0c;您的打赏、关注、点赞、收藏和转发是我坚持下去的动力&#xff01; 错误原因分析&#xff1a; Assertion错误&#xff1a; 错误信息显示 Assertion t > 0 && t < n_classes failed.&#xff0c;这意味着在计算损失时&#xff0c;标签t的值不…

第四天旅游线路预览——从换乘中心到喀纳斯湖

第四天&#xff1a;从贾登峪到喀纳斯风景区入口&#xff0c;晚上住宿贾登峪&#xff1b; 换乘中心有4 路车&#xff0c;喀纳斯①号车&#xff0c;去喀纳斯湖&#xff0c;路程时长约5分钟&#xff1b; 将上面的的行程安排进行动态展示&#xff0c;具体步骤见”Google earth stu…

【devops】devops-git之github使用

本站以分享各种运维经验和运维所需要的技能为主 《python零基础入门》&#xff1a;python零基础入门学习 《python运维脚本》&#xff1a; python运维脚本实践 《shell》&#xff1a;shell学习 《terraform》持续更新中&#xff1a;terraform_Aws学习零基础入门到最佳实战 《k8…

继承和多态(详解)

&#x1f423;继承和多态 &#x1f31e; 继承&#x1f33b;1.引入&#x1f33b;2.访问父类成员&#x1f335;2.1 子类访问父类中的成员变量&#x1f335;2.2 子类访问父类中的成员方法 &#x1f33b;3.super关键字&#x1f33b;4.子类构造方法&#x1f33b;5.super和this&#…

java spring validation 自动、手动校验

目录 一、自动校验 第一步&#xff0c;导入依赖 第二步&#xff0c;统一异常处理 第三步&#xff0c;定义接口接收实体DTO 第四步&#xff0c;在Contoller接口中增加参数注解Validated 第五步&#xff0c;测试结果 二、手动校验 第一步&#xff0c;校验工具类 第二步&…

Protubuf入门

⼀、初识 ProtoBuf 1. 序列化概念 序列化和反序列化 序列化&#xff1a;把对象转换为字节序列的过程 称为对象的序列化。 反序列化&#xff1a;把字节序列恢复为对象的过程 称为对象的反序列化。 什么情况下需要序列化 存储数据&#xff1a;当你想把的内存中的对象状态…

Spring Boot环境下的读书笔记交流网络

第2章 技术介绍 2.1B/S架构 当向其他用户发送请求的功能时应用B/S模式具有独一无二的优点&#xff1a;用户请求通过网络向其他Web服务器发送时只需要通过浏览器就可以实现该功能。该功能的好处之一就是有效简化了客户端&#xff0c;大部分开发的软件只需要用浏览器即可&#xf…

QT Mode/View之View

目录 概念 使用已存在的视图 使用模型 使用模型的多个视图 处理元素的选择 视图间共享选择 概念 在模型/视图架构中&#xff0c;视图从模型中获取数据项并将它们呈现给用户。数据的表示方式不必与模型提供的数据表示形式相似&#xff0c;而且可能与用于存储数据项的底层数…

【重学 MySQL】二十四、笛卡尔积的错误和正确的多表查询

【重学 MySQL】二十四、笛卡尔积的错误和正确的多表查询 笛卡尔积的理解和错误笛卡尔积的理解定义例子在数据库中的应用总结 笛卡尔积的错误 正确的多表查询使用 INNER JOIN使用 WHERE 子句&#xff08;隐式内连接&#xff09; 总结 在数据库查询中&#xff0c;特别是涉及到多表…

【python计算机视觉编程——9.图像分割】

python计算机视觉编程——9.图像分割 9.图像分割9.1 图割安装Graphviz下一步&#xff1a;正文9.1.1 从图像创建图9.1.2 用户交互式分割 9.2 利用聚类进行分割9.3 变分法 9.图像分割 9.1 图割 可以选择不装Graphviz&#xff0c;因为原本觉得是要用&#xff0c;后面发现好像用不…

大模型教程:使用 Milvus、vLLM 和 Llama 3.1 搭建 RAG 应用

vLLM 是一个简单易用的 LLM 推理服务库。加州大学伯克利分校于 2024 年 7 月将 vLLM 作为孵化项目正式捐赠给 LF AI & Data Foundation 基金会。欢迎 vLLM 加入 LF AI & Data 大家庭&#xff01;&#x1f389; 在主流的 AI 应用架构中&#xff0c;大语言模型&#xff…

数据清洗-缺失值处理-缺失值可视化图(竖线)

目录 一、安装所需的python包二、缺失值可视化分析2.1 可直接运行代码2.2 以某个缺失值数据进行可视化实战2.2.1 代码运行过程截屏&#xff1a;2.2.2 缺失图可视化&#xff1a; 感觉大家对原理性的东西不太感兴趣&#xff0c;那我就直接举例提供代码&#xff0c;以及详细的注释…

13、Python如何设置文件缓冲

什么是I/O操作&#xff0c;看一下百度百科的说法&#xff1a;I/O操作是指对设备与cpu连接的接口电路的操作&#xff0c;不是对外围设备直接进行操作。宏观上讲&#xff0c;I/O是信息处理系统&#xff08;例如计算机&#xff09;与外部世界&#xff08;可能是人或其他信息处理系…

Flutter之SystemChrome全局设置

一、简介 SystemChrome作为一个全局属性&#xff0c;很像 Android 的 Application&#xff0c;功能很强大。 二、使用详解 2.1 setPreferredOrientations 设置屏幕方向 在我们日常应用中可能会需要设置横竖屏或锁定单方向屏幕等不同要求&#xff0c;通过 setPreferredOrien…

阿里云镜像报错 [Errno 14] HTTP Error 302 - Found 问题解决记录

1、问题背景和解决思路 在本地安装 CentOS7 后&#xff0c;网络已调通可正常上网&#xff0c;但切换阿里云镜像后&#xff0c;使用 yum 安装软件时出现 “[Errno 14] HTTPS Error 302 - Found Trying other mirror.” 报错&#xff0c;原因是 yum 源配置问题。给出了详细的解决…

分布式可信认证:数据安全与隐私保护新范式

文章目录 前言一、可信数字身份成数据要素流通的关键二、分布式可信认证成数据安全与隐私保护新范式1、分布式可信认证很好地解决传统数字身份认证的痛点问题2、可信数字身份上升为国家战略三、安全是未来数字身份的基础1、有效的威胁建模策略是确保这些系统安全性的基石前言 …

数据清洗-缺失值填充-随机森林搜寻最优参数填充

目录 一、安装所需的python包二、采用随机森林算法进行缺失值填充2.1可直接运行代码2.2以某个缺失值数据进行实战代码运行过程截屏&#xff1a;填充后的数据截屏&#xff1a; 三、随机森林算法 (Random Forest) 介绍3.1随机森林的定义3.2随机森林的基本思想3.3随机森林的工作原…

语言模型中的多模态链式推理(论文复现)

语言模型中的多模态链式推理&#xff08;论文复现&#xff09; 本文所涉及所有资源均在传知代码平台可获取 文章目录 语言模型中的多模态链式推理&#xff08;论文复现&#xff09;简介摘要引言多模态思维链推理的挑战多模态CoT框架多模态CoT模型架构细节编码模块融合模块解码模…

redis短信登录模型

基于Session实现登录 &#xff0c;

Unity程序基础框架

概述 单例模式基类 没有继承 MonoBehaviour 继承了 MonoBehaviour 的两种单例模式的写法 缓存池模块 &#xff08;确实挺有用&#xff09; using System.Collections; using System.Collections.Generic; using UnityEngine;/// <summary> /// 缓存池模块 /// 知识点 //…