还不懂Nginx是什么?一文带你全面了解

Nginx是一款由Igor Sysoev用C语言开发的高性能HTTP和反向代理服务器,因其高并发、热部署和模块化设计而广受欢迎。其模块化机制使得开发者可以方便地扩展功能,如负载均衡。Nginx的特点包括高可用、高并发、低消耗,并通过Lua等模块提供额外功能。尽管模块化带来了一些挑战,如API的稳定性问题,但Nginx仍然是现代互联网基础设施的关键组件。
摘要由CSDN通过智能技术生成

互联网的全球化导致了互联网的数据量快速增长,为了应对如今互联网上海量的用户,轻松处理数百万、上千万的连接,Nginx应运而生。如果你还不懂Nginx是什么,想必已经被拍在时代浪潮之下了。今天尽量用相对易懂的语言进行解释,不足之处望大家补充。

Nginx是什么?

首先我们知道,在网站输入网址的时候访问某一个网站,可以得到想要的结果,如果是淘宝呢,淘宝购物每天用户量非常大,达到百万或者千万级怎么办了,这个时候人太多了,访问的时候操作系统的多线程和进程建的切换消耗了大量的CPU资源,严重会导致服务器宕机,失去用户量,企业面临破产,所以就需要有一个能解决并发访问服务器的东西。俄罗斯的工程师Igor Sysoev,他在为Rambler Media工作期间,使用C语言开发了Nginx。Nginx作为WEB服务器一直为Rambler Media提供出色而又稳定的服务。
 在这里插入图片描述

NGINX生态的重要开源模块和产品

Nginx高性能服务器有什么特点?

Nginx高性能服务器:是一种自由的,开源的,高性能的HTTP服务器;同时也是一个IMAP,POP3,SMTP代理服务器;用来实现负载均衡的。
  特点:高可用,高并发,热部署,高扩展,低消耗。

Nginx的模块化机制

Nginx的模块化机制从第一个版本就有了,但是当时Igor并不是为了第三方考虑的,只是为了方便自己的开发。用Nginx的人大都会为它的模块化机制感到惊叹,谁都可以不用改Nginx源码,只需加入自己的模块,以满足自己的需求。Lua就是最好的例子。

这问题也让Igor很头大,为什么呢?大量的第三方模块,质量参差不齐,它们严重依赖Nginx的API。Nginx是20年前的软件,当时的服务器架构跟如今已经不可同日而语。软件需要进化,就要做重构,但是API不能轻易改。关注Nginx社区的人知道,Igor亲自设计了另一个跟Nginx不同的软件Unit,这软件不会再支持模块化了,这是他们的选择。

所以从短期看,Nginx的模块化让它快速建立了整个生态。从长期看,整个生态也束缚在它的架构上。Nginx最大的问题不具备热加载,这种现在主流软件里已经不是问题,反而在它这里变成很棘手的问题,好在很多以Lua为主的应用可以解决这个问题。

如何看懂Nginx设计?

通用功能:将它扔进Nginx里,如果你能做模块开发,这点尤为重要。它意味着你将享受未来稳定和维护的红利。举个实际例子,我们在开发NJS里,有个querystring的功能,开发需要一定的成本,用JS语言来写会简单很多,但是我们依然选择将它放在JS引擎里。个人觉得类似Lua里的http request这种库,如果原生Lua模块里支持是再好不过了。对NJS,我们会选择放在js模块里,用户可以直接使用,而不用再引入任何库。还有不少的能用功能,比如常用工具函数md5,sha2之类的。

业务功能:这个不用多说,维护好业务模块就行了。

从整体看,Lua既封装了Nginx的HTTP请求,也提供了独立于请求的功能,比如timer(定时器)和cosocket(跟第三方交互的基础机制)。不管什么模块,也都是基于这两方面进行设计的。我一直推进NJS在这方面的能力,因为目前NJS只能处理请求,但即将引入内置的HTTP库,完全独立于请求的。重复一遍:请求和非请求。
 在这里插入图片描述

基于nginx-lua-module的API框架

以上就是Nginx的相关知识了,希望帮助到大家对Nginx是什么有一个基本的了解。Nginx很值得深入、系统地进行学习,关于Nginx作为代理进行实现负载均衡的内容,会再来与大家讨论分享。

  • 0
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值