Nginx 简介

2021-07-19 18:05:39 浏览数 (1)

Nginx 是一款轻量级的 Web 务器,特点是高性能、高并发。它由俄罗斯程序设计师伊戈尔·赛索耶夫开发,供俄国大型入口网站及搜索引擎 Rambler使用。Nginx 在 BSD-like 协议下发行,是一款高性能 Web 服务器,目前在 Web 服务器中排名第二。虽然 Apache 还是全球 Web 服务器的“老大”,但是 Nginx 已经占到了 Web 服务器市场 22% 以上的份额, 是成长最快的 Web 服务器 。Nginx 使用了大量的高并发和低内存占用技术,井使用了高可靠性技术,拥有高过 Apache 一个数量级以上的接入能力。因为并发能力强的特点, Nginx 在中国的互联网公司中得到了大量应用,中国的大型互联网公司无一不使用了 Nginx ,以应对中国众多的网民,以及各种抢购热潮 (如“双十 ”)、世界杯等热点事件。Nginx 在这种大量的流量涌入、需要分流、导流、反向代理的场合下得到大量应用。

Nginx 的特点

与其 Web 务器相 比, Nginx 具有 以下显著特点。

速度更快

Nginx 使用了预读、连接池、内存池等技术,使得单次 HTTP 请求速度更快。同时,因为其整体的多进程架构以及轻任务思想,在更多连接的情况下(以万为单位的井发情况下), Nginx 比其他 Web 服务器速度更快 。

扩展性好

Nginx 结构是“核心+模块”的结构,Nginx 本身就是一个基于 Epoll 或 Kqueue 的事件处理和分发架构,管理 HTTP 主流程,其他功能都可以通过模块实现。模块专注于自身功能实现,可以更稳定,模块的升级和修复不影响其他功能以及核心本身 模块可以不 断添加或升级,如事件( event )模块、代理模块、过滤模块、请求地址获取模块、地址转换模块、应答处理模块、日志模块等。Nginx 提供了众多的模块以供选择,可以配置出不同行为的 Web 服务器。

Nginx 提供了C级别的模块开发机制,但C级别的开发需要遵从复杂的数据结构。现在可以通过 ngx lua 模块以 Lua 脚本实现业务逻辑。得益于 Lua 协程的支持, ngx_lua 在万级并发请求时只占用很少的内存,而性能都是万级( Operation Per Second ,每秒操作次数),这使得 Nginx 的扩展性更好。

高可靠性

得益于整体架构的优秀以及模块设计的简单性, Nginx 拥有极高的可靠性,在各大网站中得到了认可。Nginx 核心由一个任务很轻的管理进程( master 进程)和若干工作进程(worker 进程)组成。具体的 HTTP 请求在工作进程内负载均衡,如果某个 工作进程异常终止了,管理进程会迅速重启一个新的工作进程接替该进程。

低内存占用

一般情况下, 10000 个非活跃的 HTTP 保活连接仅占用 2.5MB 内存。ngx lua 每扩展 10000 个连接也仅占 2.xMB 内存,使得 Nginx 可以大量部署。

并发能力

一般 Nginx 是部署在万级以上的场合下。为了应付海量的请求,各网站都需要单机能处理峰值 10 万以上并发请求的 Web 服务器。理论上, Nginx 处理能力的上限仅受内存限制, 简单的业务场景下 Nginx 还可以提供更高的处理能力。

Nginx 全异步、非阻塞 I/0 的思想贯穿在核心、模块以及 ngx_ lua 模块中,无论是自己 实现的模块,还是通过 Lua 实现的脚本代码,都是非阻塞地高速运行 。

热部署

因为 Nginx 的管理进程和工作进程是分开设计的,所以可以实现热部署功能,即能在系统不间断的情况下升级可执行程序、更新配置文件、更新日志文件等。

开源

Nginx 遵守相对自由的 BSD 协议。用户可以自由使用 Nginx ,还可以自由修改和使用 Nginx 的源码。用户可以在节省大量时间和成本的情况下,得到一个高性能的服务器框架。

0 人点赞