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

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.mzph.cn/news/58843.shtml

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

相关文章

SpringBoot Mybatis 多数据源 MySQL+Oracle+Redis

一、背景 在SpringBoot Mybatis 项目中&#xff0c;需要连接 多个数据源&#xff0c;连接多个数据库&#xff0c;需要连接一个MySQL数据库和一个Oracle数据库和一个Redis 二、依赖 pom.xml <dependencies><dependency><groupId>org.springframework.boot&l…

DOCKER 部署 webman项目

# 设置基础镜像 FROM php:8.2-fpm# 安装必要的软件包和依赖项 RUN apt-get update && apt-get install -y \nginx \libzip-dev \libpng-dev \libjpeg-dev \libfreetype6-dev \&& rm -rf /var/lib/apt/lists/*# 安装 PHP 扩展 RUN docker-php-ext-configure gd …

ssh访问远程宿主机的VMWare中NAT模式下的虚拟机

ssh访问远程宿主机的VMWare中NAT模式下的虚拟机 1.虚拟机端配置 1.1设置虚拟机的网络为NAT模式 1.2设置虚拟网络端口映射(NAT) 点击主菜单的编辑-虚拟网络编辑器&#xff1a; 启动如下对话框&#xff0c;选中NAT模式的菜单项&#xff0c;并点击NAT设置&#xff1a; 点击添…

计算机毕设 基于深度学习的植物识别算法 - cnn opencv python

文章目录 0 前言1 课题背景2 具体实现3 数据收集和处理3 MobileNetV2网络4 损失函数softmax 交叉熵4.1 softmax函数4.2 交叉熵损失函数 5 优化器SGD6 最后 0 前言 &#x1f525; 这两年开始毕业设计和毕业答辩的要求和难度不断提升&#xff0c;传统的毕设题目缺少创新和亮点&a…

WSL Opencv with_ffmpeg conan1.60.0

我是ubuntu18. self.options[“opencv”].with_ffmpeg True 关键是gcc版本需要conan支持&#xff0c;比如我的是&#xff1a; compilergcc compiler.version7.5 此外还需要安装系统所需库&#xff1a; https://qq742971636.blog.csdn.net/article/details/132559789 甚至来…

宏基官网下载的驱动怎么安装(宏基笔记本如何安装系统)

本文为大家介绍宏基官网下载的驱动怎么安装宏基笔记本驱动(宏基笔记本如何安装系统)&#xff0c;下面和小编一起看看详细内容吧。 宏碁笔记本怎么一键更新驱动 1. 单击“开始”&#xff0c;然后选择“所有程序”。 2. 单击Acer&#xff0c;然后单击Acer eRecovery Management。…

ChatGPT 制作可视化柱形图突出显示第1名与最后1名

对比分析柱形图的用法。在图表中显示最大值与最小值。 像这样的动态图表的展示只需要给ChatGPT,AIGC,OpenAI 发送一个指令就可以了, 人工智能会快速的写出HTML与JS代码来实现。 请使用HTML,JS,Echarts完成一个对比分析柱形图,在图表中突出显示第1名和最后1名用单独一种不…

Vue 项目性能优化 — 实践指南

前言 Vue 框架通过数据双向绑定和虚拟 DOM 技术&#xff0c;帮我们处理了前端开发中最脏最累的 DOM 操作部分&#xff0c; 我们不再需要去考虑如何操作 DOM 以及如何最高效地操作 DOM&#xff1b;但 Vue 项目中仍然存在项目首屏优化、Webpack 编译配置优化等问题&#xff0c;所…

idea查找maven所有依赖

文章目录 idea自带的依赖结构图idea安装maven helper插件 idea自带的依赖结构图 缺点是只有依赖&#xff0c;没有版本 idea安装maven helper插件 settings–>plugins–>搜索maven helper并安装 安装后打开pom.xml文件会有依赖解析 勾选conflict就是有冲突的依赖选中…

(笔记三)opencv图像基础操作

强调&#xff1a;本文只为学习记录做笔记 详细可参考opencv官网 &#xff1a;https://docs.opencv.org/4.1.1/d0/d86/tutorial_py_image_arithmetics.html &#xff08;1&#xff09;将cv2的BGR模式改为RGB模式 #!/usr/bin/env python # -*- coding:utf-8 -*- ""&q…

springboot中使用ElasticSearch

引入依赖 修改我们的pom.xml&#xff0c;加入spring-boot-starter-data-elasticsearch <dependency><groupId>org.springframework.boot</groupId><artifactId>spring-boot-starter-data-elasticsearch</artifactId> </dependency>编写配…

React 项目中引入msal验证以及部分报错处理

功能实现 如何在React 项目中引入msal身份验证&#xff0c; 微软在官网有提供文档支持&#xff0c;文档包含示例和具体使用的教程&#xff0c;地址如下&#xff1a; https://learn.microsoft.com/zh-cn/azure/active-directory/develop/tutorial-v2-nodejs-webapp-msal 照着文…

TP DP PP 并行训练方法介绍

这里写目录标题 张量并行TP流水线并行 PPnaive模型并行GPipePipeDream 数据并行DPFSDP 张量并行TP 挖坑 流水线并行 PP 经典的流水线并行范式有Google推出的Gpipe&#xff0c;和微软推出的PipeDream。两者的推出时间都在2019年左右&#xff0c;大体设计框架一致。主要差别为…

Bean的生命周期和执行流程

文章目录 一.Bean的生命周期1.Bean的作用域2.设置Bean的作用域3.Spring的执行流程4.Bean的生命周期 一.Bean的生命周期 1.Bean的作用域 Bean的作用域指的是Bean在Spring容器中的某种行为模式,默认是singleton(单例模式)&#xff0c;一共分为6种,后四种用于spring mvc中有用 si…

无涯教程-Android - Broadcast Receivers

Broadcast Receivers 仅响应来自其他应用程序或系统本身的广播消息&#xff0c;这些消息有时称为events或intents。例如&#xff0c;应用程序还可以启动广播&#xff0c;以使其他应用程序知道某些数据已下载到设备并可供他们使用&#xff0c;因此广播接收器将拦截此通信并启动适…

avalonia、WPF使用ScottPlot动态显示ECG心电图

文章目录 avalonia、WPF使用ScottPlot动态显示ECG心电图实现效果&#xff0c;动态效果懒得录视频了安装代码部分UpdateData方法就是用来更新心电图表的方法&#xff0c; 根据消息队列数据去更新是视图中的ScottPlot 图表 avalonia、WPF使用ScottPlot动态显示ECG心电图 avalonia…

VR全景:助力乡村振兴,实现可持续发展

引言&#xff1a; 随着科技的飞速发展&#xff0c;虚拟现实&#xff08;VR&#xff09;全景技术正在以惊人的速度改变着我们的生活方式和产业格局。全景技术不仅在娱乐、教育等领域取得了巨大成功&#xff0c;也为乡村振兴提供了全新的机遇。通过以乡村为背景的VR全景体验&…

2023-08-27 LeetCode每日一题(合并区间)

2023-08-27每日一题 一、题目编号 56. 合并区间二、题目链接 点击跳转到题目位置 三、题目描述 以数组 intervals 表示若干个区间的集合&#xff0c;其中单个区间为 intervals[i] [starti, endi] 。请你合并所有重叠的区间&#xff0c;并返回 一个不重叠的区间数组&#…

Python实战之数据表提取和下载自动化

在网络爬虫领域&#xff0c;动态渲染类型页面的数据提取和下载自动化是一个常见的挑战。本文将介绍如何利用Pyppeteer库完成这一任务&#xff0c;帮助您轻松地提取动态渲染页面中的数据表并实现下载自动化。 一、环境准备 首先&#xff0c;确保您已经安装了Python环境。接下来…

SQLServer2008数据库还原失败 恢复失败

源地址&#xff1a;http://www.taodudu.cc/news/show-1609349.html?actiononClick 还原数据库问题解决方案 在还原数据库“Dsideal_school_db”时&#xff0c;有时会遇见上图中的问题“因为数据库正在使用&#xff0c;所以无法获得对数据库的独占访问权”&#xff0c;此时我们…