從入門到實踐,快速掌握 Nginx 研發

2022-06-09 05:03:11 字數 1870 閱讀 9010

對於開發來說,我們在工作中或多或少都會遇到 web 效能優化、高併發等問題,而 nginx 是乙個萬能藥,它具備高效能、高擴充套件性、高可靠性、低記憶體消耗等優勢,不管是個人建立**、部落格,還是進行網際網路應用開發,都可以輕鬆應對。

實驗樓上線了一門《nginx 網路模組編寫入門》課程,或許可以幫助到有系統學習nginx 需求的同學們。

課程從研發的角度,系統介紹了 nginx 網路模組的程式設計,分為 9 個實驗,將逐一講解:

即使你之前從未使用過 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 出現之前,已經存在 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),又滿足了歷史的發展需求(網際網路和移動網際網路的繁榮),導致它變得流行。

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

點選《nginx 網路模組編寫入門》,免費學習課程前兩節。

三 nginx從入門到實踐 場景實踐篇

靜態資源web服務 服務 負載均衡排程器lsb 動態快取 靜態資源型別 非伺服器動態執行生成的檔案 型別 種類 瀏覽器端渲染 html css js jpeg gif png cdn內容分發網路 配置語法 檔案讀取 with file aio 非同步檔案讀取 sendfile開啟的情況下,提高網路包...

Nginx入門到實踐

http sub module http內容替換 location 請求頻率限制 limit reg module語法 limit conn zone binanry remote addr zone conn zone 1m 同個ip過來請求,每秒只允許乙個請求 工具htpasswd locati...

Nginx從入門到實踐 基礎篇(安裝)

一 nginx快速搭建與基本引數額使用 版本mainline version 開發版本 stable version 穩定版 legacy version 歷史版本 nginx 官網 基於yum源安裝修改yum源 vim etc yum.repos.d nginx.repo 新增以下內容 nginx...