Nginx(1)

目录

  • 1.Nginx概述
  • 2.Nginx的特点
  • 3.Nginx主要功能
    • 1.反向代理
    • 2.负载均衡

1.Nginx概述

Nginx (engine x) 是一个自由的、开源的、高性能的HTTP服务器反向代理服务器,也是一个IMAP、POP3、SMTP代理服务器。

Nginx是一个强大的web服务器软件,用于处理高并发的HTTP请求和作为反向代理服务器做负载均衡。具有高性能轻量级内存消耗少,强大的负载均衡能力等优势。

作为一个 HTTP 服务器,Nginx 可以使用较少的内存非常高效可靠地提供静态资源。作为反向代理服务器做负载均衡,它可以动态分发客户端请求,充分利用后端服务器资源。

2.Nginx的特点

  • 跨平台:可以在大多数Unix like系统编译运行
  • 配置简单
  • 非阻塞,高并发连接:数据复制时,磁盘IO的第一阶段是非阻塞。官方测试能支持5万并发连接。
  • Nginx代理和后端Web服务器之间无需长连接
  • Nginx接受客户请求是异步的,即先将用户请求全部接收下来,再一次性发送到后端Web服务器,极大减轻后端Web服务器的压力。
  • 支持内置服务检测。Nginx能够根据应用服务器处理页面返回的状态码,超时信息检测服务是否出现故障,并及时返回错误的请求重新提交到其它节点上
  • 内存消耗小,成本低廉,节省带宽,稳定性高
  • Nginx支持热部署,几乎做到7*24小时不间断运行,运行数个月也不需要重新启动,还能够在不间断服务的情况下,对软件版本进行升级。

3.Nginx主要功能

1.反向代理

1.1反向代理: 是指代理服务器来接收Internet上的客户端请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给客户端。此时代理服务器对外就表现为一个反向代理服务器。
反向代理客户端不知道服务器的信息,隐藏了服务器的信息

1.2正向代理:是一个位于客户端和原始服务器之间的服务器,为了从原始服务器获得内容。客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转发并获得的内容返回给客户端
正向代理服务器不知道客户端的信息,隐藏了客户端的信息

2.负载均衡

Nginx负载均衡是以反向代理的方式进行负载均衡的,简而言之,就是当有两台或者以上服务器,根据规则随机的将请求分发到指定的服务器上处理,负载均衡配置一般都需要配置反向代理,通过反向代理跳转到负载均衡。
将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,负载分发到不同的服务器,就是我们所说的负载均衡

Nginx中常见的的负载均衡方式

1.轮询(Nginx自带,默认)
该策略是Nginx默认的负载均衡策略,每一个客户端请求按时间顺序轮流分配到不同的服务器上,如果后端服务不可以用,会自动过滤掉。

2.weight权重(Nginx自带)
weight代表权重的意思,用于指定轮询的几率,默认权重都是1,可以手动设置调整,权重越高,被分配的次数越多,weight权重和访问比例是成正比的,用于解决后端服务器性能不均衡时,调整访问比例。

3.ip_hash(Nginx自带)
ip_hash是将每个请求按照访问ip的hash结果进行分配,这种方式可以保证同一个用户会固定访问一个后端服务器。优点:可以保证session会话,解决服务器之间session不能共享的问题

4.least_conn(Nginx自带)
将请求转发给连接数较少的后端服务器。每个后端服务器配置可能不同,处理的请求也有可能不同,对于处理的请求有快有慢,least_conn是根据后端服务器的连接情况,动态的选择连接数量较少的一台服务器来处理当前的请求。

5.fair(第三方)
fair是按照服务器端的响应时间来分配请求,响应时间短的服务器优先分配。第三方的负载均衡策略需要安装第三方的插件

6.url_hash(第三方)
url_hash是根据url的hash结果进行分配请求,每一个url会固定到同一个服务器上,配合缓存使用,可以减少不必要的下载和资源时间的浪费。每次同一个url请求到达同一个服务器上,第一次加载后放入缓存,后面再次请求,直接取缓存资源。如果不采用url_hash,可能会导致请求到达不同的服务器,资源出现重新加载的情况。第三方的负载均衡策略需要安装第三方的插件。

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

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

仅使用 CSS 创建打字机动画效果

创建打字机效果比您想象的要容易。虽然实现这种效果的最常见方法是使用 JavaScript,但我们也可以使用纯 CSS 来创建我们的打字机动画。 在本文中,我们将了解如何仅使用 CSS 创建打字机动画效果。它简单、漂亮、容易。我们还将看看使用 CSS 与 JavaScrip…

百度资深PMO阚洁受邀为第十二届中国PMO大会演讲嘉宾

百度在线网络技术(北京)有限公司资深PMO阚洁女士受邀为由PMO评论主办的2023第十二届中国PMO大会演讲嘉宾,演讲议题:运筹于股掌之间,决胜于千里之外 —— 360斡旋项目干系人。大会将于8月12-13日在北京举办,…

大模型开发(十六):从0到1构建一个高度自动化的AI项目开发流程(中)

全文共1w余字,预计阅读时间约40~60分钟 | 满满干货(附代码),建议收藏! 本文目标:通过LtM提示流程实现自动构建符合要求的函数,并通过实验逐步完整测试code_generate函数功能。 代码下载点这里 一、介绍 此篇文章为…

【ChatGPT 指令大全】怎么使用ChatGPT来帮我们写作

在数字化时代,人工智能为我们的生活带来了无数便利和创新。在写作领域,ChatGPT作为一种智能助手,为我们提供了强大的帮助。不论是作文、文章,还是日常函电,ChatGPT都能成为我们的得力助手,快速提供准确的文…

HTTP——九、基于HTTP的功能追加协议

HTTP 一、基于HTTP的协议二、消除HTTP瓶颈的SPDY1、HTTP的瓶颈Ajax 的解决方法Comet 的解决方法SPDY的目标 2、SPDY的设计与功能3、SPDY消除 Web 瓶颈了吗 三、使用浏览器进行全双工通信的WebSocket1、WebSocket 的设计与功能2、WebSocket协议 四、期盼已久的 HTTP/2.01、HTTP/…

“委屈”退市,达利并不“无辜”

文 | 螳螂观察 作者 | 青月 “我吃零食,不是因为肚子饿,只是有点馋。” 第一次听到这话的时候,达利食品的创始者许世辉,还是一个平平无奇的打工人,和很多的工友挤在一个小宿舍里,而其中有位工友特别爱吃…

【并发编程】无锁环形队列Disruptor并发框架使用

Disruptor 是苹国外厂本易公司LMAX开发的一个高件能列,研发的初夷是解决内存队列的延识问顾在性能测试中发现竟然与10操作处于同样的数量级),基于Disruptor开发的系统单线程能支撑每秒600万订单,2010年在QCn演讲后,获得了业界关注…

24届近5年东南大学自动化考研院校分析

今天给大家带来的是东南大学控制考研分析 满满干货~还不快快点赞收藏 一、东南大学 学校简介 东南大学是我国最早建立的高等学府之一,素有“学府圣地”和“东南学府第一流”之美誉。东南大学前身是创建于1902年的三江师范学堂。1921年经近代著名教育家…

本地构建包含java和maven的镜像

目录 1.前提条件 2.下载 2.1.创建Dockerfile 3.构建镜像 参考文章 1.前提条件 本地环境需要的系统和软件 win10 Docker Desktop Powershell 图1 Win10安装Docker后,直接在Powershell使用Docker命令 有些Developer不习惯win10系统,却想要使用Lin…

让三驾马车奔腾:华为如何推动空间智能化发展?

上个月,国务院常务会议审议通过了《关于促进家居消费的若干措施》,其中明确提出了“推动单品智能向全屋智能发展创新培育智能消费”“开展数字家庭建设试点”等推动全屋智能拼配发展的建议与方案。 可以说,以整屋为单位的空间智能品类&#x…

【Spring Boot】Thymeleaf模板引擎 — Thymeleaf页面布局

Thymeleaf页面布局 熟悉Thymeleaf的语法和表达式后,后面开发起来会更加得心应手。接下来好好研究一下Thymeleaf如何实现完整的Web系统页面布局。 1.引入代码片段 在模板中经常希望包含来自其他模板页面的内容,如页脚、页眉、菜单等。为了做到这一点&a…

2023年下半年软考初级程序员备考攻略

初级程序员考试科目包含基础知识和应用技术,各科目的考试形式都是笔试,满分均为75分。程序员考试需要各科目在一次考试中均及格才算合格,单科及格的成绩不保留,也不能转移到下次考试时使用。 这里给大家理清一个程序员考试的相关…

09. Docker Compose

目录 1、前言 2、安装Docker Compose 2.1、Docker Compose版本 2.2、下载安装 3、初试Docker Compose 3.1、传统方案部署应用 3.2、使用编排部署应用 3.3、其他命令 3.3.1、ps 3.3.2、images 3.3.3、depends_on 3.3.4、scale 4、小结 1、前言 随着应用架构的不段…

JUC并发编程(JUC核心类、TimeUnit类、原子操作类、CASAQS)附带相关面试题

目录 1.JUC并发编程的核心类 2.TimeUnit(时间单元) 3.原子操作类 4.CAS 、AQS机制 1.JUC并发编程的核心类 虽然java中的多线程有效的提升了程序的效率,但是也引发了一系列可能发生的问题,比如死锁,公平性、资源管理…

数学建模学习(10):遗传算法

遗传算法简介 • 遗传算法(Genetic Algorithms)是基于生物进化理论的原理发展起来的一种广为 应用的、高效的随机搜索与优化的方法。其主要特点是群体搜索策略和群体中个体之 间的信息交换,搜索不依赖于梯度信息。它是20世纪70年代初期由美国…

手上有大量精准的手机号码,如何把这些精准客户加到微信呢?

手上有大量精准的手机号码,如何把这些精准客户加到微信呢? 微信管理系统,有什么优势呢? ① 可批量导入手机号码、vx号码自动加好友 ② 设置自动加人的间隔时间,有效解决了加好友频繁被限制的问题 ③ 还可以多个微信…

企业服务器被devos勒索病毒攻击后怎么处理,devos勒索病毒如何攻击的

众所周知,科学技术是第一生产力,科学技术的发展给企业与人们的生活带来了极大变化,但随之而来的网络安全威胁也不断增加。最近,我们收到很多企业的求助,企业的计算机服务器遭到了devos勒索病毒的攻击,导致企…

软件测试工程师面试如何描述自动化测试是怎么实现的?

软件测试工程师面试的时候,但凡简历中有透露一点点自己会自动化测试的技能点的描述,都会被面试官问,那你结合你的测试项目说说自动化测试是怎么实现的?一到这里,很多网友,包括我的学生,也都一脸…

一篇文章,教你彻底掌握接口测试!

Part 01、什么是接口测试 所谓接口,是指同一个系统中模块与模块间的数据传递接口、前后端交互、跨系统跨平台跨数据库的对接。而接口测试,则是通过接口的不同情况下的输入,去对比输出,看看是否满足接口规范所规定的功能、安全以及…

从零开始:构建您自己的直播带货软件开发计划

1. 确定目标和需求 在开始开发之前,您需要明确您的目标和需求。考虑以下问题: 您的直播带货软件是面向哪个市场和用户群体? 您的软件需要支持哪些主要功能,如实时视频直播、商品展示、购买支付、实时互动等? 您是否需…