Nginx到底是什么,他能干什么?

news2024/11/17 19:45:55

Ngnix是什么,它是用来做什么的呢?

一。Nginx简介

Nginx是enginex的简写,是一款很优秀的开源的高性能HTTP和反向代理服务器,由于它是用C语言写的,所以速度非常快,性能非常优秀,它主要功能就是反向代理,负载均衡,配置SSL证书,防盗链,解决跨域问题,缓存,限流,动静资源分离等等

Nginx是一款轻量级的,高性能的代理Web服务器,作为一个很强大的高性能Web和反向代理服务器它具有很多优秀的特性:Nginx更轻巧,处理的并发数更大(Nginx的并发性在同类型的服务其中表现很好)中国用户使用的很多,比如  百度,京东,网易,腾讯,淘宝等互联网大厂,对HTTP并发连接的高处理能力(单台服务器通常可以处理三万到六万个并发请求),单个链接占用的内存小,通常较多用于处理静态页面和反向代理服务。

Nginx和Apache都采用模范化的结构设计,在连接高并发的情况下,Nginx是Apache服务不错的代理品:Apache的下载包很大,而Nginx的下载包很小,现在的版本大概只有几兆的大小,安装非常方便。能支持最大60000个并发连接数,这是他无与伦比的优势。

上面介绍了Nginx是一台Web服务器,实际上,它并不是一台真正意义上的物理服务器,并不是主观真实存在的实体,它是运行在某台服务器(电脑)上的软件。

那为什么还说它是一台Web服务器呢,???

我们先来理解一下什么事网关,大家都知道,从一个房间进入另一个房间内,必须经过一个门,就像经过一个“关口”,那么从一个网络发送一个消息到另一个网络,也必须经过一个关口,这个关口就可以说是网关。这个关口并不是摆在那里那么简单,关口可以自行决定允不允许让你的消息通过,或者决定是否替你转发和接收消息,把消息分发给其他人,或者帮你的消息添加和需处理一些消息,或者替你回答消息等等功能。

而Nginx就相当于这个网关,转发和接收消息就相当于反向代理,把消息分给其他人就相当于负载均衡。当我们的服务器(电脑)上安装了Nginx这个软件,通过一些简单的配置并运行这个软件,我们在服务器上运行的项目(例如java程序)在接收HTTP请求的时候,这个请求就会被Nginx这个网关先拦截,经过一些上述的处理之后再交给Java程序,此时Nginx就充当了一个网关。因为外网用户的所有请求都会先经过Nginx,所以对于外网的用户来说,他们的请求都是发送给Nginx的,再由Nginx发送给java程序处理后再发还给用户,那么从用户的角度来看,Nginx就相当于一台服务器在接收和回复用户发送的消息,所以也可以理解为Nginx是一台Web服务器。

二,为什么要用Nginx呢?

Nginx跨平台,配置简单。我们可以在linux和windows系统上都开启Nginx服务,配置也非常简单,

在linux上,我们通常只需要修改三四行代码,就可以完成项目的配置,当后端程序重构或者重新部署,例如Java项目换成go项目,也不需要修改Nginx。

Nginx是由C语言写的,速度非常快,性能很优越。目前公认的性能最高的后端语言就是C和C++,而Nginx就是由C语言写的和编译的,其单机开发量非常高,可以达到5w+,而一般的后端Java程序并没有这么高的并发量,所以一般都会选择Nginx当网关放在Java程序之前,提高系统的整体性能。

动静资源分离,一般公司的前后端一般静态资源都会放到Nginx分离项目,用户想获取前端静态资源文件,都得先经过后端Java程序的接口再获取服务器上的静态资源文件,这样的效率并不是很高,而且会占用正常程序接口连接数量,这时候Nginx的动静资源分离功能就提供了很好的解决方法,一般的静态资源文件都会放到Nginx服务器中。当Nginx接收到了获取静态资源的请求,就直接在Nginx服务器中把放进去的静态资源返回了,而不用真正到达后端接口,这个效率是非常高的,比正常的访问速度会快一倍左右。

在并发量较大的项目中,后端往往会开启多个相同的Java服务,来缓解单服务的压力,我们知道,每个Java服务程序都会占用一个端口,那前端在后端接口的时候,怎么知道选择哪个接口呢?这个时候就可以在所有的Java程序前放置一个Nginx程序,所有的请求都会经过Nginx,由Nginx决定分发到哪个端口程序上,,虽然后端有很多个Java程序,但对于前端来说,是无感知的,就好像后台只有一个项目再跑。

二。Nginx应用

1.HTTP代理和反向代理

正向代理有点像NAT网络结构,用户通过网关请求访问网站,网关服务器负责和外网服务器对接请求访问并返回结果

而反向代理则是,用代理服务器来接受客户端的访问请求,然后服务器将请求有策略的转发给正在实际工作中的业务服务器,并将从业务服务器的处理的结果,返回给客户端。

 2.负载均衡

负载均衡建立在现有的网络结构之上,他提供了一种廉价有效透明的方法扩展网络设备和服务器的宽带,增加吞吐量,加强网络数据的处理能力,提高网络的灵活性和可用性

它利用一些反向代理功能加算法策略达到我们想要访问的目的

负载均衡的策略主要有:轮询,加权轮询,IP hash

轮询:

假如有三台服务器和三台客户端,第一次访问时,第一个服务器接受请求;第二次访问时,第二台服务器接受请求,第三次访问时,第三台服务器接受请求。。。。以此类推,按次序分配。

加权轮询:

对接受的请求做一个加权分配,配置高的服务器承担的请求多一点,配置低的接受的请求少一点。假如第二台服务器是第一台服务器的两倍,单位时间里,可以让第二台服务器执行两次,第一台执行一次

IP   hash:

是对客户端请求的ip进行hash散列算法操作,然后根据hash结果将同一客户端的ip请求分发给同一台服务器进行处理,可以解决session不共享的问题

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

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

相关文章

使用安全复制命令scp在Windows系统和Linux系统之间相互传输文件

现在已经有很多远程控制服务器的第三方软件平台,比如FinalShell,MobaXterm等,半可视化界面,使用起来非常方便和友好,两个系统之间传输文件直接拖就行,当然也可以使用命令方式在两个系统之间相互传递。 目录…

Java网络爬虫——jsoup快速上手,爬取京东数据。同时解决‘京东安全’防爬问题

Java网络爬虫——jsoup快速上手,爬取京东数据。同时解决‘京东安全’防爬问题 介绍 网络爬虫,就是在浏览器上,代替人类爬取数据,Java网络爬虫就是通过Java编写爬虫代码,代替人类从网络上爬取信息数据。程序员通过设定…

Spring Cloud Gateway的快速使用

环境前置搭建Nacos&#xff1a;点击跳转 Spring Cloud Gateway Docs 新建gateway网关模块 pom.xml导入依赖 <!-- 网关 --> <dependency><groupId>org.springframework.cloud</groupId><artifactId>spring-cloud-starter-gateway</artifact…

部署Spring Boot项目

上传jar包 之前在新建Spring Boot项目[1]使用mvn install的方式&#xff0c;已经构建出jar包。 通过scp或rz/sz&#xff0c;将该jar包上传到服务器 执行java -jar hello-0.0.1-SNAPSHOT.jar,发生如下报错&#xff1a; Exception in thread "main" java.lang.Unsuppo…

jsp+servlet+mysql阳光网吧管理系统

项目介绍&#xff1a; 本系统使用jspservletmysql开发的阳光网吧管理系统&#xff0c;纯手工敲打&#xff0c;系统管理员和用户角色&#xff0c;功能如下&#xff1a; 管理员&#xff1a;修改个人信息、修改密码&#xff1b;机房类型管理&#xff1b;机房管理&#xff1b;机位…

如何变更小程序会员卡的上级

在小程序中&#xff0c;手动变更会员的上级是一项常见的操作。无论是为了层级调整还是因个人原因&#xff0c;支持手动变更会员的上级可以有效地管理和优化团队的组织结构。下面就具体介绍如何手动变更会员的上级。 1. 找到指定的会员卡。在管理员后台->会员管理处&#xf…

vue项目静态文件资源下载

业务场景&#xff1a;页面有一个导入功能&#xff0c;需要一个模板文件供下载&#xff0c;文件放在本地。 对于 Vue 3 Vite 项目&#xff0c;使用 require 方法来导入模块是不被支持的。require 是 CommonJS 规范中用于模块导入的方法&#xff0c;在 Webpack 等构建工具中常用…

扩散模型实战(八):微调扩散模型

推荐阅读列表&#xff1a; 扩散模型实战&#xff08;一&#xff09;&#xff1a;基本原理介绍 扩散模型实战&#xff08;二&#xff09;&#xff1a;扩散模型的发展 扩散模型实战&#xff08;三&#xff09;&#xff1a;扩散模型的应用 扩散模型实战&#xff08;四&#xf…

FPGA VR摄像机-拍摄和拼接立体 360 度视频

本文介绍的是 FPGA VR 相机的第二个版本&#xff0c;第一个版本是下面这样&#xff1a; 第一版地址&#xff1a; ❝ https://hackaday.io/project/26974-vr-camera-fpga-stereoscopic-3d-360-camera ❞ 本文主要介绍第二版本&#xff0c;第二版本的 VR 摄像机&#xff0c;能够以…

Python提取JSON文件中的指定数据并保存在CSV或Excel表格文件内

本文介绍基于Python语言&#xff0c;读取JSON格式的数据&#xff0c;提取其中的指定内容&#xff0c;并将提取到的数据保存到.csv格式或.xlsx格式的表格文件中的方法。 JSON格式的数据在数据信息交换过程中经常使用&#xff0c;但是相对而言并不直观&#xff1b;因此&#xff0…

Java学习笔记31——字符流

字符流 字符流为什么出现字符流编码表字符串中的编码解码问题字符流写数据的5中方式字符流读数据的两种方式字符流复制Java文件 字符流 为什么出现字符流 汉字的存储如果是GBK编码占用2个字节&#xff0c;如果是UTF-8占用三个字节 用字节流复制文本文件时&#xff0c;文本文…

华为---OSPF协议优先级、开销(cost)、定时器简介及示例配置

OSPF协议优先级、开销、定时器简介及示例配置 路由协议优先级&#xff1a;由于路由器上可能同时运行多种动态路由协议&#xff0c;就存在各个路由协议之间路由信息共享和选择的问题。系统为每一种路由协议设置了不同的默认优先级&#xff0c;当在不同协议中发现同一条路由时&am…

【USRP】调制解调系列3:2FSK、4FSK、8FSK,基于labview的实现

2FSK、4FSK、8FSK FSK&#xff08;Frequency-shift keying&#xff09;是信息传输中使用得较早的一种调制方式,它的主要优点是: 实现起来较容易,抗噪声与抗衰减的性能较好。在中低速数据传输中得到了广泛的应用。最常见的是用两个频率承载二进制1和0的双频FSK系统。 FSK 信号…

uni-app开发小程序,radio单选按钮,点击可以选中,再次点击可以取消

一、实现效果&#xff1a; 二、代码实现&#xff1a; 不适用官方的change方法&#xff0c;自己定义点击方法。 动态判断定义的值是否等于遍历的值进行回显&#xff0c;如果和上一次点击的值一样&#xff0c;就把定义的值改为null <template><view><radio-group&…

国产自主可控C++工业软件可视化图形架构源码

关于国产自主代替的问题是当前热点&#xff0c;尤其是工业软件领域。 “一个功能强大的全自主C跨平台图形可视化架构对开发自主可控工业基础软件至关重要&#xff01;” 作为全球领先的C工业基础图形可视化软件提供商&#xff0c;UCanCode软件有自己的思考&#xff0c;我们认…

Linux中的工具:yum,vim,gcc/g++,make/makefile,gdb

目录 1、yum 1.1 查看软件包&#xff1a; 1.2 安装软件包 1.3 卸载软件 2、vim 2.1 vim的三种模式 2.2 vim的基本操作 2.3. vim正常模式命令集 2.3.1 插入模式 2.3.2 移动光标 2.3.3 删除文字 2.3.4 复制 2.3.5 替换 2.3.6撤销上一次操作 2.3.7 更改 2.3.8 跳至…

WebGL模型矩阵

前言&#xff1a;依赖矩阵库 WebGL矩阵变换库_山楂树の的博客-CSDN博客 先平移&#xff0c;后旋转的模型变换&#xff1a; 1.将三角形沿着X轴平移一段距离。 2.在此基础上&#xff0c;旋转三角形。 先写下第1条&#xff08;平移操作&#xff09;中的坐标方程式。 等式1&am…

Mybatis1.4 多条件查询

1.4 多条件查询 1.4.1 编写接口方法1.4.2 编写SQL语句1.4.3 编写测试方法1.4.4 动态SQL 我们经常会遇到如上图所示的多条件查询&#xff0c;将多条件查询的结果展示在下方的数据列表中。而我们做这个功能需要分析最终的SQL语句应该是什么样&#xff0c;思考两个问题 条件表达式…

即时通讯开发中的性能优化技巧

即时通讯开发在如今的数字化社会中扮演着重要角色&#xff0c;然而&#xff0c;随着用户对即时通讯应用的需求不断增长&#xff0c;开发者们面临着使其应用保持高性能和可靠性的挑战。本文将探讨即时通讯开发中关键的性能优化技巧&#xff0c;帮助开发者们提升应用的用户体验和…

带你深入了解分布式系统

一.前言 当我们进行购物的时候,不知道大家有没有想过,每个人有那么多订单,要浏览海量商品,要加载许多网页,屏幕背后的网站是怎么完成这一系列的网页响应,数据存储的?本文将带大家深入了解这背后的机制和原理. 在进⾏技术学习过程中&#xff0c;由于⼤部分人没有经历过⼀些中⼤…