在这里,NGINX 创始人 Igor Sysoev 将亲述 NGINX 的诞生史

article/2025/9/29 20:21:45

2020 年 5 月 20 日,一场 NGINX 在国内的盛会、一个所有 NGINX 用户 & 爱好者朝圣的最佳场所,F5 线上技术峰会 – NGINX 专场将以线上直播的形式面向所有开发者召开。届时各位 NGINX 开发者心目中的偶像 NGINX 创始人 Igor Sysoev 以及国内 NGINX 技术专家陶辉老师将空降大会现场,从 NGXIN 创始人的成长经历出发,帮助每一位开发者来重新理解 NGINX 的前世今生。  

如果想让产品在支持高并发请求的同时保持高效的服务,NGINX 可能是最好的选择。

这并非一句玩笑话,而是经过全球技术人多年来技术实践后所得出的结论。NGINX 就像一个万能药,在任何存在性能需求的场合都能找到它的身影,它可以在百万并发链接中实现高吞吐量的 Web 服务。然而即便是这样,NGINX 却至今缺少一个能够将所有 NGINX 用户聚集起来的官方场所,这对于像这样一个如此受欢迎的开源产品来说是很不常见的,而这也是此次大会之下的重头戏之一。

NGINX 现在已经成为了众多企业后台架构的核心,许多企业都将 NGINX 用作承担所有来自 Web 服务的业务流量负载,也将其用作全球数百万台服务  器上的反向代理,能够支撑业务数以百万级别的高并发。这样一款自由的、开源的、高性能的 HTTP 服务器和反向代理软件,在企业“数字化转型概念”大行其道的今天,NGINX 能力给企业的后台架构带来了极大的稳定性,更是成为企业实现数字转型的必备利器。

1对于企业来说,NGINX 是实现数字转型的有效途径

NGINX 是实现技术突破的必要工具。

随着 2020 年的魔幻开局,国内众多行业都受到了不小的冲击,疫情期间人人自危,企业复工困难,上下游供应链有一端没有恢复就不能真的恢复业务;像疫情这种黑天鹅事件是完全不可预测的。对于企业而言现在正处于一个模糊的、不确定的、快速变化的时代,在这种 VUCA 时代特征下出现这种状况可以说既是意外又不是意外。对于企业的影响一方面取决于该行业的特点,另外一方面企业所做出反应状况的不同也会形成不一样的结果。

随之而来的就是许多线下业务被迫转移线上,然而看起来只是一场非常简单的业务迁移,但在后台架构看来,却是一场对企业自身、以及企业后台面对流量、并发与架构稳定性的挑战。

首先是业务场景的变换。从线下切换至线上,不只是业务呈现形式的变更,其更涉及到企业内部更深处的平台建设、流程规划、人员培训等一系列内容。

其次是现有的技术能力难以支撑。随着线下业务的大量取消,越来越多的用户开始涌入线上平台,这对企业的后端架构能力提出了更高的要求,要在能够稳定承受流量高并发的同时还能兼顾后台性能的稳定性。然而这对众多专注在线下业务的企业来说,要在短时间内把线上平台打造为这样一款高性能的平台,的确有点难为他们。

这也显示出当下的一个痛点,场景的突然转变驱使着企业去选择具备更加高性能、更加高效的处理平台,而对于企业的现实情况来说,线上的高并发表示其急需平台下的高性能 web 服务。

而这,恰好是 NGINX 的长处。为什么这么说?因为相较于传统 ADC,NGINX 具有以下几点优势:

1、采用事件驱动的异步框架

基于异步及非阻塞的事件驱动模型,可以说是 NGINX 得以获得高并发、高性能的关键因素。因为一个 HTTP/HTTPS 请求包括多个阶段,每一个阶段在什么时候发生是不确定的,这就造成了异步性。每一个阶段的发生都会触发事件驱动框架,然后交由事件消费者处理,也就是说一个事件消费者仅仅是处理了一个请求中的一小部分。NGINX 采用事件驱动的设计来减少进程休眠的几率,从而实现提高网络性能、减少请求延时以及支撑高并发的能力。

2、反向代理

有正向代理自然就存在反向代理。正向代理是指以请求端也就是客户端的角度为正向,用户发出请求经过的代理,称为“正向代理”。反向代理则恰恰相反,是由代理选择服务端节点。存在即合理,反向代理的存在也表明其拥有着不可替代优势:

  • 首先能够通过隐藏服务节点的 IP 来保护服务安全,此外也可以通过将服务节点置于防火墙之后来确保业务节点服务器不会被直接攻击到。
  • 其次反向代理可以让服务节点更加专注于业务,一些 HTTPS、压缩等于业务无关的能力可以交由反向代理服务器去实现,从而避免浪费业务服务节点处理请求的能力。
  • 最后反向代理服务器能够提供额外的缓存机制,将一些短时间内不会变化的动态内容储存在缓存中,降低业务服务器的请求量;

正是由于 NGINX 引入了反向代理的特性,让请求和响应都要经过 NGINX,因此也给 NGINX 带来了诸如负载均衡、HTTP 缓存等能力。

3、负载均衡

“准备超越当前 ADC 的功能了吗?”这是在 NGINX 官网负载均衡功能介绍页面非常醒目的一句话,这无疑显示了 NGINX 在这方面的雄厚实力与决心。负载均衡就是将请求“均衡”地分配到多台业务节点服务器上。这里的“均衡”是依据实际场景和业务需要而定的。对于 NGINX 来说,请求到达 NGINX,NGINX 作为反向代理服务器,有绝对的决策权,可以按照规则将请求分配给它知道的节点中的一个,通过这种分配,使得所有节点需要处理的请求量处于相对平均的状态,从而实现负载均衡。

4、HTTP 缓存

浏览器缓存是前端开发中经常遇到的问题,它是提升性能同时减少服务器压力的有效手段之一。NGINX 可以作为静态页面的 web 服务器,同时还支持 CGI 协议的动态语言,比如 perl、PHP 等。

而综合上述总结的几点 NGINX 优势,NGINX 无疑是最合适的那个打造高性能平台的工具。然而虽然它很火,但往往流行程度和开发者的掌握程度是不相等的。尤其是在众多业务转型线上,越来越多的企业认识到 NGINX 对于业务支撑的重要性,作为开发者,掌握 NGINX 开发能力似乎已经成为了“必修课”。

然而开发者在应用 NGINX 的过程中往往会遇到各种问题,国内 NGINX 技术专家陶辉曾经总结过,大多数人使用 NGINX 都停留在这几个级别:

  • 第一种:使用 NGINX 配置最简单的反向代理服务或者静态资源服务,当扩展功能时发现新增的指令 NGINX 不支持,但又不懂如何增加 NGINX 模块,如何分析 access 日志。
  • 第二种:可以根据源码定制安装 NGINX,对网上流传的大众配置做一些个性化的修改,但遇到修改 proxy_pass 后的 URL 上游服务不正常等问题时就束手无策,不清楚 NGINX 各个目录的意义,也不清楚 NGINX 的进程结构。
  • 第三种:能够顺畅地使用 NGINX 的常用功能,但不清楚第三方模块发生冲突时的解决方案、stale 过期缓存的用法、NGINX 诸多变量是如何被赋值的、听说 if 指令是邪恶的却不知道它的设计理念及正确用法等等。
  • 第四种:可以正确地使用 NGINX 的功能及第三方模块,并按照网络上常见的优化参数优化性能,但对如何系统化地优化性能没有头绪,对于 NGINX、Linux 提供的内存缓冲区、网络类等诸多指令和参数的优化没有头绪。
  • 第五种:可以熟练使用 NGINX,但对各第三方功能模块如何与 NGINX 结合使用以及对 NGINX 性能影响不太清楚,对 NGINX 源码的理解没有达到由点到面的程度。

但这还只是冰山一角,NGINX 技术所涵盖的范围之广超出我们每一个人的想象。作为一款全球最受欢迎的开源产品之一,NGINX 的一举一动都受到了来自全球开发者的重点关注。

2NGINX 在中国又有大动作了

2020 年 5 月 20 日(星期三),F5 以线上峰会的形式召开 F5 Code to Customer 2020 代码到用户暨 F5 中国 20 周年纪念庆典。届时,各位 NGINX 开发者心目中的偶像 NGINX 创始人 Igor Sysoev 以及国内 NGINX 技术专家陶辉老师将空降大会现场,从 NGXIN 创始人的成长经历出发,帮助每一位开发者来重新理解 NGINX 的前世今生。

另外备受开发者关注的 NGXIN 开源社区也将在大会现场正式成立,至此,NGINX 开发者终于有一个官方的“家”。此外本次大会更设有 5 大技术专题论坛、30+ 技术内容深度解读以及 100+ 解决方案,足以满足你对数字转型技术趋势的渴望。扫描下图二维码或点击阅读原文链接即可免费报名!

扫/码/报/名

3关于 NGINX 中国开源社区

NGINX 开源社区是 F5/NGINX 面向所有 NGINX 用户的官方社区。我们秉持“开放,包容,沟通,贡献“ (open,inclusive,connect,contribution) 之宗旨,与业界共建开放、包容、活跃的“NGINX 用户之家“;秉承开源的精神,在社区治理上高度开放,为所有 NGINX 的用户,开发者和技术爱好者,提供一个方便学习、讨论的场所。也期待您成为此社区中活跃的一员,贡献您的文章,博客,代码,踊跃讨论与回答问题,打造您个人品牌和影响力。

2019 年 3 月,云计算和安全应用服务公司 F5 Networks Inc 宣布收购 NGINX,NGINX 是应用交付领域的开源领导者。


http://chatgpt.dhexx.cn/article/aaqxxNAI.shtml

相关文章

如何用NGINX实现UDP四层反向代理?

原文作者:陶辉 原文链接:如何用NGINX实现UDP四层反向代理?- NGINX开源社区 转载来源:NGINX开源社区 在实时性要求较高的特殊场景下,简单的UDP协议仍然是我们的主要手段。 UDP协议没有重传机制,还适用于同时…

Nginx深度剖析,真是被大牛讲透了

开篇 Nginx是一款非常出色的服务器软件,从开始工作到现在,周围所有的公司都在使用Nginx。在多年的使用过程中,逐渐对Nginx的源码产生了浓厚的兴趣,我不满足于仅仅会使用,我想更加深入的理解它的内部工作原理。只有深入…

CPGIS三十周年专访系列|陶闯主席

近日,国际华人地理信息科学协会CPGIS建会30周年之际,开展了一次历届主席专访活动,陶闯博士作为国际华人地理信息科学协会CPGIS,2000-2001届的主席,接受了CPGIS的专访,忆往昔,看今朝,…

【10道大厂必考的计算机网络问题】陶辉老师

目录 1.请详细介绍一下TCP的三次握手协议,为什么要三次握手? 2.说说HTTP协议中缓存的处理流程?缓存的应用流程?与缓存相关的HTTP头部? 3.在地址栏键入URL后,网络世界发生了什么? 4.使用HTTP长连接有哪些优点&#…

HTTP详细介绍

转自:HTTP详细介绍本文参考 wiki百科、陶辉老师《Web协议详解与抓包实战》 和 作者在一线多年的运维工作总结希望对大家有所帮助。常见osi模型(7层)发起组织: 国际电信联盟电信标准化部门,与国际标准组织(ISOhttps://www.pinlue.c…

10 道大厂面试必考的计算机网络问题-陶辉 极客时间

大厂中更多会考察你的长板. 在大厂中要学会求助 1.TCP的三次握手机制,为什么要三次? 为什么需要握手? 需要同步序列号,当然也有MSS(最大报文段长度),滑动窗口. 为什么是3次? 正常想法应该是: C:我要建连接,我的seq是这个; S:我收到了 S:我的Seq是这个 C:我也收到了…

TVP思享 | 四个全新维度,极限优化HTTP性能

导语 | 当产品的用户量不断翻番时,需求会倒逼着你优化HTTP协议。那么,要想极限优化HTTP性能,应该从哪些维度出发呢?本文将由TVP陶辉老师,为大家分享四个全新维度。「TVP思享」专栏,凝结大咖思考&#xff0c…

uni-app从入门到放弃(一)

文章目录 一、uni-app简单介绍什么是uni-app?uni-app的优点跨平台发行,运行体验更好通用前端技术栈,学习成本更低开发生态,组件更丰富 二、功能框架浏览图三、创建项目1、安装HBuilderX2、创建uni-app3、运行项目4、官方提示 四、项目中使用扩展组件五、…

CUDA——从入门到放弃

1. 知识准备 1.1 中央处理器(CPU) 中央处理器(CPU,Central Processing Unit)是一块超大规模的集成电路,是一台计算机的运算核心(Core)和控制核心( Control Unit&#xf…

MySQL从入门到放弃(三)

插入数据 插入数据之前首先创建一张persons表 CREATE TABLE persons( id INT NOT NULL AUTO_INCREMENT, name CHAR(40) NOT NULL DEFAULT 无名, age INT NOT NULL DEFAULT 0, info CHAR(50) NULL, PRIMARY KEY(id) ); 为表的所有字段插入数据 一次插入一条数据 INSERT INTO…

Python从入门到放弃

Python基础知识: Python列表 Python元组 Python字符串 Python字典 Python正则 Python字典排序 Python编码Python正则表达式 Python集合 Python map Python reduce Python lambdaPython 函数Python 文件 Python数据可视化编程: Python数据可视化Python画…

1、LabVIEW从入门到放弃

LabVIEW从入门到放弃 一、其实不想学二、学习资源三、成果展示四、声明 一、其实不想学 最近导师想要用LabVIEW写点东西,进行一些实验验证。虽然之前摸过几天,也就是为了应付考试,啥都没学到。接下来时间可能真的需要从入门到放弃了~   总结…

Linux从入门到放弃

mac环境下的linux搭建 一.linux作为一个开源的操作系统,以其稳定性和安全性,是程序员必不可少且需要掌握的系统。可能用惯了windows以及mac的我们一开始用起来很难受,但相信我,用惯了以后,你会更难受。小玩笑而已&…

C语言从入门到放弃

Unix是C的作者开发的。 Unix附属诞生物,当时使用的是cc编译器 然后有了linux就封装成了gcc编译器,但由于考虑到老家伙的使用习惯,还保留了cc C语言是结构化程序语言(一个程序能包含多个函数).C语言简单粗暴&#xff0c…

c语言从入门到秃头表情包,c语言从入门到放弃表情包 - c语言从入门到放弃微信表情包 - c语言从入门到放弃QQ表情包 - 发表情 fabiaoqing.com...

从入门到精神异常(资深病友狗头著)_精神异常_病友_狗头表情 不好意思拿错了(Java Web从入门到精通)_拿错_JAVA_Web表情 C语言从研发到脱发_脱发_研发_语言表情 我也只是新手入门第一次见有人就如此会装逼 幸会幸会 哪里的话_新手入门_装逼_幸会幸表情 熊猫头写个C语言(666)_666…

深度学习---从入门到放弃(七)CNN进阶,迁移学习

深度学习—从入门到放弃(七)CNN进阶,迁移学习 引入 图像是高维的。即image_length* image_width*image_channels是一个很大的数字,而上一教程里所提到的CNN的权值共享便是一种解决图像和其他领域高维问题的方法。 从上图中可以…

【傻瓜攻略】深度学习之从入门到放弃

从研究生进来之后,一直到现在已经进行了一年关于DP的学习,写篇文章总结一下我蹒跚的学习过程。总结来说是一个从入门学习到几乎想要放弃的过程。顺带列举下面几个坑,希望能帮助一下同样在这条路上行走的旅人们。 1、overfitting这个东西 很…

android异步编程,使用RxAndroid处理异步任务

欢迎Follow我的GitHub, 关注我的简书. 其余参考Android目录. Demo Android Rx是响应式编程的意思, 本质是观察者模式, 是以观察者(Observer)和订阅者(Subscriber)为基础的异步响应方式. 在Android编程时, 经常会使用后台线程, 那么就可以使用这种方式. 目前的异步编程方式都会导…

RxAndroid 入门笔记

参考链接: http://gank.io/post/560e15be2dca930e00da1083#toc_10 https://mcxiaoke.gitbooks.io/rxdocs/content/Observables.html http://blog.chengyunfeng.com/?p948 http://www.apkbus.com/blog-705730-62567.html 要了解RxAndroid,必须先要了解RxJava,应…

【Rxandroid】Rxandroid源码解读

目录 1.AndroidSchedulers类的源码 2.RxAndroidPlugins类的源码 3.RxAndroidSechedulersHook类的源码 4.LooperScheduler类的源码 5.HandlerScheduler类的源码 6.BuildConfig类的源码 7.MainThreadSubscription类的源码 总结 将Rxandroid(1.2.1)…