从入门到实践,快速掌握 Nginx 研发

Nginx 是一种非常流行的 Web 服务器软件,全球超过 30%的网站都在 Nginx 上运行,如腾讯、淘宝、百度、京东、新浪、网易等。

对于开发来说,我们在工作中或多或少都会遇到 web 性能优化、高并发等问题,而 Nginx 是一个万能药,它具备高性能、高扩展性、高可靠性、低内存消耗等优势,不管是个人建立网站、博客,还是进行互联网应用开发,都可以轻松应对。

我们都知道 Nginx 好用,但大多数人对 Nginx 的理解和使用只停留在初步阶段,并没有挖掘出 Nginx 的效能。我们收集了一些大家使用 Nginx 遇到的困惑,贴几个:

  • 一开始公司就让我来配置服务器,真的懵了,原理也不大懂,网上看了一堆资料,没个系统化,到底要怎么学?
  • Nginx 处理 HTTP 请求需要经过哪 11 个阶段啊?!
  • 如何用 Nginx 系统编写 HTTP 模块?

实验楼上线了一门《Nginx 网络模块编写入门》课程,或许可以帮助到有系统学习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,见下图:

从入门到实践,快速掌握 Nginx 研发

图片引自 2020 年 3 月 Web 服务器市场占有率调查 。

Nginx 为什么会流行

在 Nginx 出现之前,已经存在 Apache 这种功能与 Nginx 有很多重合的服务器,而且 Apache 经过几十年的发展,运行高度稳定,功能也非常完备,支持的平台众多,配套的软件不计其数。但是也正因为 Apache 已经存在几十年了,历史包袱重,其性能低和对系统资源的占用率高等问题越来越不满足互联网和移动互联网发展的需求。

Apache 在较老的系统上,只能用低效的 select 网络 I/O 多路复用接口(即提供一个或者几个函数来添加,监控和删除多个连接的网络事件,如可读,关闭等),虽然在较新的系统上,它也支持如 epoll 等高效的网络 I/O 多路复用接口,但是其由于历史原因,它的一个进程同时只能全程处理一个请求,处理完后才能再处理另一个请求,这可能导致进程频繁切换,严重消耗系统资源,无法应对现在动则上万,十几万甚至几十万的并发请求:

从入门到实践,快速掌握 Nginx 研发

Nginx 从诞生起就使用了 epoll (Linux)和 kqueue (FreeBSD)等高效的网络 I/O 多路复用接口。不过,在某些平台上它仍然能使用 select 等传统的网络 I/O 多路复用接口,如 Windows 。不仅如此,Nginx 从设计之初就保证了一个进程同时能处理很多个请求,所以它减少了进程切换带来的开销:

从入门到实践,快速掌握 Nginx 研发

另外,Nginx 也支持常见的操作系统,如 Linux,FreeBSD,MacOS,Windows 等。再次,Nginx 对资源的占用很少,稳定性也经受住了众多公司的检验。最后,Nginx 为编写第三方模块提供了一套稳定的接口,吸引了众多个人,组织和公司为其开发各种功能的模块,详情可以参考 Nginx 第三方模块列表(部分)。

总之,就是 Nginx 赶上了操作系统的变革时代(Linux 2.6+ 开始支持 epoll),又满足了历史的发展需求(互联网和移动互联网的繁荣),导致它变得流行。

篇幅有限,更多课程内容可以在实验楼边敲代码边学习~

点击了解更多,免费学习课程前两节。


分享到:


相關文章: