從入門到實踐,快速掌握 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),又滿足了歷史的發展需求(互聯網和移動互聯網的繁榮),導致它變得流行。

篇幅有限,更多課程內容可以在實驗樓邊敲代碼邊學習~

點擊瞭解更多,免費學習課程前兩節。


分享到:


相關文章: