对付开拓来说,我们在事情中或多或少都会碰着 web 性能优化、高并发等问题,而 Nginx 是一个万能药,它具备高性能、高扩展性、高可靠性、低内存花费等上风,不管是个人建立网站、博客,还是进行互联网运用开拓,都可以轻松应对。
我们都知道 Nginx 好用,但大多数人对 Nginx 的理解和利用只勾留在初步阶段,并没有挖掘出 Nginx 的效能。我们网络了一些大家利用 Nginx 碰着的困惑,贴几个:
如何用 Nginx 系统编写 HTTP 模块?
实验楼上线了一门《Nginx 网络模块编写入门》课程,或容许以帮助到有系统学习Nginx 需求的同学们。

课程从研发的角度,系统先容了 Nginx 网络模块的编程,分为 9 个实验,将逐一讲解:
如何编译和利用 Nginx;如何利用干系的验证工具,编写大略的 HTTP 模块和 HTTP 过滤模块,并在此根本上先容如何利用自定义变量;如何利用 Nginx 的定时器;如何利用工具检讨编写的模块中是否存在内请安题。纵然你之前从未利用过 Nginx 也没紧要,课程会从 Nginx 的历史和上风讲起,帮助你建立起系统的认识。
Nginx 的发展史Nginx 最开始是由 Igor Sysoev 在 Rambler.ru 任职期间开拓的,它出身于 2002 年 8 月 6 日。
从 nginx-0.5.x 开始(韶光为 2007 年旁边),Nginx 开始受到海内互联网人士关注,如在海内遍及 Nginx 的先驱 — 张宴。
2011 年 12 月 2 日,阿里巴巴旗下的淘宝网技能团队正式开源了基于 nginx-1.0.10 开拓的一个主要变种 Tengine 。
2020 年 3 月,Nginx 在环球 Web 做事器市场的霸占率首超老牌 Web 做事器 Apache,见下图:
图片引自 2020 年 3 月 Web 做事器市场霸占率调查 。
Nginx 为什么会盛行在 Nginx 涌现之前,已经存在 Apache 这种功能与 Nginx 有很多重合的做事器,而且 Apache 经由几十年的发展,运行高度稳定,功能也非常完备,支持的平台浩瀚,配套的软件不计其数。但是也正由于 Apache 已经存在几十年了,历史包袱重,其性能低和对系统资源的占用率高档问题越来越不知足互联网和移动互联网发展的需求。
Apache 在较老的系统上,只能用低效的 select 网络 I/O 多路复用接口(即供应一个或者几个函数来添加,监控和删除多个连接的网络事宜,如可读,关闭等),虽然在较新的系统上,它也支持如 epoll 等高效的网络 I/O 多路复用接口,但是其由于历史缘故原由,它的一个进程同时只能全程处理一个要求,处理完后才能再处理另一个要求,这可能导致进程频繁切换,严重花费系统资源,无法应对现在动则上万,十几万乃至几十万的并发要求:
Nginx 从出身起就利用了 epoll (Linux)和 kqueue (FreeBSD)等高效的网络 I/O 多路复用接口。不过,在某些平台上它仍旧能利用 select 等传统的网络 I/O 多路复用接口,如 Windows 。不仅如此,Nginx 从设计之初就担保了一个进程同时能处理很多个要求,以是它减少了进程切换带来的开销:
其余,Nginx 也支持常见的操作系统,如 Linux,FreeBSD,MacOS,Windows 等。再次,Nginx 对资源的占用很少,稳定性也经受住了浩瀚公司的考验。末了,Nginx 为编写第三方模块供应了一套稳定的接口,吸引了浩瀚个人,组织和公司为其开拓各种功能的模块,详情可以参考 Nginx 第三方模块列表(部分)。
总之,便是 Nginx 遇上了操作系统的变革时期(Linux 2.6+ 开始支持 epoll),又知足了历史的发展需求(互联网和移动互联网的繁荣),导致它变得盛行。
篇幅有限,更多课程内容可以在实验楼边敲代码边学习~
点击理解更多,免费学习课程前两节。