【Nginx】01-什么是Nginx?Nginx技术的功能及其特性介绍

news2024/10/6 10:30:51

目录

  • 1. 介绍
    • 1.1 常见服务器的对比
        • 1)IIS
        • 2)Tomcat
        • 3)Apache
        • 4)Lighttpd
    • 1.2 Nginx的优点
      • (1) 速度更快、并发更高
      • (2) 配置简单、扩展性强
      • (3) 高可靠性
      • (4) 热部署
      • (5) 成本低、BSD许可证
  • 2. Nginx常用功能
    • 2.1 基本HTTP服务
    • 2.2 高级HTTP服务
    • 2.3 邮件服务
  • 3. 反向代理
    • 3.1 正向代理
    • 3.2 反向代理
  • 4. Nginx常用功能模块
    • 4.1 Nginx 四大核心功能:
    • 4.2 Nginx核心组成


1. 介绍

  • Nginx (“engine x”) 是一个具有高性能的【HTTP】和【反向代理】的【WEB服务器】,同时也是一个【POP3/SMTP/IMAP代理服务器】,是由伊戈尔·赛索耶夫 (俄罗斯人) 使用 C 语言编写的。Nginx 的第一个版本是 2004年10月4号 发布的 0.1.0 版本。另外值得一提的是,伊戈尔·赛索耶夫将 Nginx 的源码进行了开源,这也为 Nginx 的发展提供了良好的保障。
  • Nginx 官网:https://nginx.org

1.1 常见服务器的对比

  • 打开 Nginx 的官网,点击右边栏中的【about】。

    image-20221120200114261

  • 可以看到一段话,根据 Netcraft 公司的调研,Nginx 实时的全球服务器市场占比份额,笔者写本文时是 2022 年 11 月,可以看到 Nginx 占全球服务器市场的 21.21% ,将近五分之一的市场,可以说是非常牛逼了。

    image-20221120200215717

  • 我们可以点进这个超链接,进入 [Netcraft 官网](November 2022 Web Server Survey | Netcraft News),可以看到最新的全球服务器占比图。可以看到,Nginx 自 2010 开始就发展非常迅猛。

    image-20221120200449222


1)IIS

  • 全称 (Internet Information Services) 即互联网信息服务,是由微软公司提供的基于 Windows 系统的互联网基本服务。Windows 作为服务器在稳定性与其他一些性能上都不如类 UNIX 操作系统,因此在需要高性能 Web 服务器的场合下,IIS 可能就会被"冷落"。

2)Tomcat

  • Tomcat 是一个运行 Servlet 和 JSP 的 Web 应用软件,Tomcat 技术先进、性能稳定而且开放源代码,因此深受 Java 爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的 Web 应用服务器。但是 Tomcat 天生是一个重量级的 Web 服务器,对静态文件和高并发的处理比较弱。
  • 一台空载的 Tomcat 服务器,其并发访问量最高在 200~300 左右。而一台 Nginx 服务器可以达到 5 万~6 万 次/秒的并发访问量。

3)Apache

  • Apache 的发展时期很长,同时也有过一段辉煌的业绩。从上图可以看出大概在 2014 年以前都是市场份额第一的服务器。Apache 有很多优点,如稳定、开源、跨平台等。但是它出现的时间太久了,在它兴起的年代,互联网的产业规模远远不如今天,所以它被设计成一个重量级的、不支持高并发的Web服务器。在 Apache 服务器上,如果有数以万计的并发 HTTP 请求同时访问,就会导致服务器上消耗大量内存,操作系统内核对成百上千的 Apache 进程做进程间切换也会消耗大量的 CUP 资源,并导致 HTTP 请求的平均响应速度降低,这些都决定了 Apache 不可能成为高性能的 Web 服务器。这也促使了 Lighttpd 和 Nginx 的出现。

4)Lighttpd

  • Lighttpd 是德国的一个开源的 Web 服务器软件,它和 Nginx 一样,都是轻量级、高性能的 Web 服务器,欧美的业界开发者比较钟爱 Lighttpd ,而国内的公司更多的青睐 Nginx ,同时网上 Nginx 的资源要更丰富些。

  • 经过各个服务器的对比,种种迹象都表明,Nginx 将以性能为王。这也是我们为什么选择 Nginx 的理由。


1.2 Nginx的优点


(1) 速度更快、并发更高

  • 单次请求或者高并发请求的环境下,Nginx 都会比其他 Web 服务器响应的速度更快。一方面在正常情况下,单次请求会得到更快的响应,另一方面,在高峰期 (如有数以万计的并发请求),Nginx 比其他 Web 服务器更快的响应请求。Nginx 之所以有这么高的并发处理能力和这么好的性能,是因为 Nginx 采用了多进程和 I/O 多路复用 (epoll) 的底层实现。

(2) 配置简单、扩展性强

  • Nginx 的设计极具扩展性,它本身就是由很多模块组成,这些模块的使用可以通过配置文件的配置来添加。这些模块有官方提供的也有第三方提供的模块,如果需要完全可以开发服务自己业务特性的定制模块。

(3) 高可靠性

  • Nginx 采用的是多进程模式运行,其中有一个 master 主进程和 N 多个 worker 进程。master 进程负责管理 worker 进程。worker 进程的数量我们可以手动设置,每个 worker 进程之间都是相互独立提供服务,并且 master 主进程可以在某一个 worker 进程出错时,快速去"拉起"新的 worker 进程提供服务。

(4) 热部署

  • 现在互联网项目都要求以 7×24 小时地进行服务的提供,针对于这一要求,Nginx 也提供了热部署功能,即可以在 Nginx 不停止的情况下,对Nginx 进行文件升级、更新配置和更换日志文件等功能。

(5) 成本低、BSD许可证

  • BSD 是一个开源的许可证,世界上的开源许可证有很多,现在比较流行的有六种分别是GPL、BSD、MIT、Mozilla、Apache、LGPL。这六种的区别是什么,我们可以通过下面一张图来解释下:

    1585139995444

  • Nginx 本身是开源的,我们不仅可以免费的将 Nginx 应用在商业领域,而且还可以在项目中直接修改 Nginx 的源码来定制自己的特殊要求。这些点也都是 Nginx 为什么能吸引无数开发者继续为 Nginx 来贡献自己的智慧和青春。比如 OpenRestry 这款产品就是 Nginx + Lua ;淘宝在 Nginx 的基础上进行二次开发的产品 Tengine 。

    image-20221120203316438


2. Nginx常用功能

  • Nginx 提供的基本功能服务从大体上归纳为"基本HTTP服务"、“高级HTTP服务”和"邮件服务"等三大类。

2.1 基本HTTP服务

Nginx 可以提供基本 HTTP 服务,可以作为 HTTP 代理服务器和反向代理服务器,支持通过缓存加速访问,可以完成简单的负载均衡和容错,支持包过滤功能,支持 SSL 等。

  • 处理静态文件、处理索引文件以及支持自动索引;
  • 提供反向代理服务器,并可以使用缓存加上反向代理,同时完成负载均衡和容错;
  • 提供对 FastCGI 、memcached 等服务的缓存机制,同时完成负载均衡和容错;
  • 使用 Nginx 的模块化特性提供过滤器功能。Nginx 基本过滤器包括 gzip 压缩、ranges 支持、chunked 响应、XSLT、SSI 以及图像缩放等。其中针对包含多个 SSI 的页面,经由 FastCGI 或反向代理,SSI 过滤器可以并行处理。
  • 支持 HTTP 下的安全套接层安全协议 SSL 。
  • 支持基于加权和依赖的优先权的 HTTP/2 。

2.2 高级HTTP服务

  • 支持基于名字和 IP 的虚拟主机设置。
  • 支持 HTTP/1.0 中的 KEEP-Alive 模式和管线 (PipeLined) 模型连接。
  • 自定义访问日志格式、带缓存的日志写操作以及快速日志轮转。
  • 提供 3xx~5xx 错误代码重定向功能。
  • 支持重写 (Rewrite) 模块扩展。
  • 支持重新加载配置以及在线升级时无需中断正在处理的请求。
  • 支持网络监控。
  • 支持 FLV 和 MP4 流媒体传输。

2.3 邮件服务

Nginx 提供邮件代理服务也是其基本开发需求之一,主要包含以下特性:

  • 支持 IMPA/POP3 代理服务功能。
  • 支持内部 SMTP 代理服务功能。

Nginx支持电子邮件协议:

  • POP3 :Post Office Protocol 3 。邮局协议的第三个版本。
  • SMTP:Simple Mail Transfer Protocol 。简单邮件传输协议。
  • IMAP:Internet Mail Access Protocol 。交互式邮件存取协议。

3. 反向代理

  • 反向代理是 Nginx 的三大核心功能之一。为了更好地理解反向代理,先来介绍一下正向代理。

3.1 正向代理

  • 在没有代理时,客户端和服务端都是直接通信 (下图三角形的底边) 。
  • 而正向代理就是在客户端和服务端之间添加了一个代理。客户端发送请求时,不再直接发送到服务端,而是先发送到代理 Proxy ,经过代理 Proxy 再将请求发送到代理认为合适的服务端去处理。
  • 服务端响应时,响应的数据不是直接返回给客户端,也是先返回给代理,再由代理返回给客户端。
  • 代理 Proxy 就相当于客户端和服务端之间的中间人。我们常用的翻墙就是基于这种模式。

1573489359728


3.2 反向代理

  • 反向代理可以接收客户端的请求,把客户端的请求分发给多个不同的服务端,降低单个服务端的压力。
  • 可以将服务端隐藏起来,增强了服务端安全性。
  • 【正向】一词的理解,就是正向代理是为客户端而服务的;而【反向】就相反,反向代理是为服务端服务的。

1573489653799


4. Nginx常用功能模块


4.1 Nginx 四大核心功能:

  • 静态资源部署 (前端页面);
  • Rewrite 地址重写;
  • 反向代理;
  • 负载均衡;

image-20221120205409503


4.2 Nginx核心组成

  • nginx 二进制可执行文件
  • nginx.conf 配置文件
  • error.log 错误的日志记录
  • access.log 访问日志记录

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

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

相关文章

华为数通2022年11月 HCIP-Datacom-H12-821 第二章

142.以下关于状态检测防火墙的描述,正确是哪一项? A.状态检测防火墙需要对每个进入防火墙的数据包进行规则匹配 B.因为UDP协议为面向无连接的协议,因此状态检测型防火墙无法对UDP报文进行状态表的匹配 C.状态检测型防火墙只需要对该连接的第一…

性能测试-CPU性能分析,IO密集导致系统负载高

目录 IO密集导致系统负载高 使用top命令-观察服务器资源状态 使用vmstat命令-观察服务器资源状态 使用pidstat命令-观察服务器资源状态 使用iostat命令-观察服务器资源状态 IO密集导致系统负载高 stress-ng -i 10 --hdd 1 --timeout 100-i :有多少个工作者进行&#…

函数的极限:如何通过 δ 和 ϵ 来定义一个连续的函数

连续的定义 维基百科给出的定义: 连续函数(英语:Continuous function)是指函数在数学上的属性为连续。直观上来说,连续的函数就是当输入值的变化足够小的时候,输出的变化也会随之足够小的函数。 所以不要直…

51单总线控制SV-5W语音播报模块

单总线控制SV-5W语音播报模块SV-5W语音播报模块SV-5W语音播报模块简介工作模式说明模块配置接线驱动部分代码效果展示SV-5W语音播报模块 SV-5W语音播报模块简介 DY-SV5W是一款智能语音模块,集成IO分段触发,UART串口控制,ONE_line单总线串口控…

macOS monterey 12.6.1安装homebrew + nginx + php + mysql

效果图 主要步骤 安装homebrew使用brew安装nginxphpmysql详细步骤 参考“Homebrew国内如何自动安装(国内地址)(Mac & Linux)”安装brew, 命令: /bin/zsh -c "$(curl -fsSL https://gitee.com/cu…

[附源码]java毕业设计网上学车预约系统

项目运行 环境配置: Jdk1.8 Tomcat7.0 Mysql HBuilderX(Webstorm也行) Eclispe(IntelliJ IDEA,Eclispe,MyEclispe,Sts都支持)。 项目技术: SSM mybatis Maven Vue 等等组成,B/S模式 M…

教你十分钟在Linux系统上快速装机并安装Ansible

PS:本教程建立在VMware软件上的使用上,Linux版本为centos7或者centos8都可以。 一、看发行版本 cat /etc/redhat-release 二、修改主机名 hostnamectl set-hostname centos8 三、自动获取IP地址 nmcli connection modify ens160 autoconnect yes 四、设置…

软件设计(一):统一建模语言基础知识

1.UML简介 1.1 UML简介 UML语言是一种可视化的标准建模语言,它是一种分析和设计语言,通过UML可以构造软件系统的蓝图。 1.2 UML的结构 1.2.1 视图(view) 1.2.2 图(daigram) 用例图 类图 对象图 包图…

C/C++ 语言怎么保留n位小数并且四舍五入

1、普通的printf输出打印 printf()函数的用例 float date=123.456; printf("date=%.2f\n", date);//保留2位 printf("date=%.1f\n", date);//保留1位 输出 2、获取四舍五入后的数据 1、使用round函数 C ++ round()函数 (C++ round() function) round(…

ELK技术栈简介

ELK技术栈简介ELK是什么ELK组件ElasticsearchES基本概念ES适用场景LogstashInput插件Filter插件Output插件CodecsKibanaBeatsELK是什么 ELK 即 Elasticsearch Logstash Kibana,是指Elastic公司开发的三种免费开源软件。其中,Elasticsearch是一个基于A…

基于PHP+MYSQL在线小说阅读网的设计与实现

随着互联网信息的发展,人们在闲暇的时候更多的原因选择小说来进行阅读,一方面扩展自己的阅读圈,另一方面消磨闲暇时光,但是当下的很多小说网站,要么是要收取高昂的阅读法,要么就是整个网站多充斥着大量的广告,为了给广大网友一个健康,免费的阅读空间我们开发了本系统 本在线小说…

【JS】数据结构之树结构

文章目录树结构二叉树二叉搜索树平衡树(AVL树)红黑树回顾其他数据结构(每种数据结构都有自己特定的应用场景): 数组:通过下标查询很快,插入和删除数据的时候,效率会很低,…

新品上线 | 企企通推出达人管理系统,助力达人营销提效增速

01、直播市场发展迅速 企企通达人管理系统应运而生 近年来,直播凭借其即时性、互动性、多样化的优势,迅速在互联网占据一席之地,“直播”模式不断扩展,直播电商应运而生。 在技术发展与市场需求双重驱动下,中国直播市…

day04 springmvc

day04 springmvc 第一章 SpringMVC运行原理 第一节 启动过程 1. Servlet 生命周期回顾 生命周期环节调用的方法时机次数创建对象无参构造器默认:第一次请求 修改:Web应用启动时一次初始化init(ServletConfig servletConfig)创建对象后一次处理请求se…

嵌入式Linux系统中ARM汇编语言的使用方法

大家好,今天主要大家聊一聊,如何在ARM中使用汇编语言的方法。 目录 第一:汇编基础简介 第二:处理器内部数据传输指令 第三:存储器访问指令 第一:汇编基础简介 我们在学习嵌入式Linux开发的时候是绝…

【用户画像】Redis_Jedis测试、将人群包存放到Redis中、挖掘类标签处理过程、决策树、用SparkMLLib实现决策树

文章目录一 Redis_Jedis_测试1 Jedis所需要的jar包2 连接Redis注意事项3 测试相关数据类型(0)测试连接(1)Key(2)String(3)List(4)set(5&#xff0…

shiro-第一篇-基本介绍及使用

shiro 概述 shior的话,在第一次听说的时候单纯的任务它就是一个安全框架,可以对访问接口的用户进行验证等工作,类似拦截器或过滤器的东西,但是在学习后,发现远远不止这些,它的灵活性和易用性让我震惊&…

408 | 【计网】第二章 物理层 回顾

自用冲刺笔记整理。 部分图片来自王道。 加油ヾ(◍∇◍)ノ゙ (一)通信基础 1.信道、信号、带宽、码元、波特、速率/数据率、信源与信宿等基本概念 单向通信、半双工通信(双方都可接发,不能同时)、全双工通信码元:用一个固定时长(码元宽度)的信号波形表示一位k进制数字。 …

高项 风险管理论文

六个过程: 1,规划风险管理:决定如何进行规划和实施项目风险管理活动。 2,识别风险:判断哪些风险会影响项目,并以书面形式记录其特点。 3,实施定性风险分析:对风险概率和影响进行评…

通信原理学习笔记5-2:数字调制——连续相位和恒包络问题(非线性功放、连续相位CP FSK信号、最小频移键控MSK、GMSK)

为了最大程度利用非线性功放,需要降低信号PAPR,这要求信号具有恒包络特性信道带宽有限,需要降低信号带外泄露(进而传输失真小),要求信号具有连续相位特性(从而高频成分少) 波形连续…