學會Nginx,10倍提升你的Web應用性能!

作者:開源最前線(ID:OpenSourceTop) 猿妹


7 年前,Nginx 的份額還只是 3.9%,如今已達到 33.3 %,是增量最快的 Web 服務器。平均而言,在全球 Top 1000 萬網站當中,每分鐘有 1 網站轉向 Nginx。同樣是 7 年前,Apache 的份額是 71.5%,如今降到 50%。微軟是 IIS 從 20.6% 降到 11.3%。


由此可見,Nginx 近年來市場份額持續攀升,越來越受開發者的青睞,今天,我們就一起來了解下Nginx。

高性能 Web 服務器 Nginx


授權協議:BSD

開發語言:C/C++

操作系統:跨平臺

開發廠商:Ngnix

Github:https://github.com/nginx/nginx 78731



640.png?wxfrom=5&wx_lazy=1 Nginx 簡介 640.png?wxfrom=5&wx_lazy=1

0?wx_fmt=gif

Nginx是一款輕量級的 Web 服務器/反向代理服務器及電子郵件(IMAP/POP3)代理服務器,並在一個 BSD-like 協議下發行,可以在 UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及 Microsoft Windows 等操作系統中運行。


Nginx 由俄羅斯的程序設計師 Igor Sysoev 所開發,最初供俄國大型的入口網站及搜尋引擎 Rambler(俄文:Рамблер)使用。其特點是佔有內存少,併發能力強,事實上 nginx 的併發能力確實在同類型的網頁服務器器中表現較好。


Nginx 的特點


Nginx 是一款面向性能設計的 HTTP 服務器,相較於 Apache、lighttpd 具有佔有內存少,穩定性高等優勢。與舊版本(<=2.2)的 Apache 不同,nginx 不採用每客戶機一線程的設計模型,而是充分使用異步邏輯,削減了上下文調度開銷,所以併發服務能力更強。


整體採用模塊化設計,有豐富的模塊庫和第三方模塊庫,配置靈活。在 Linux 操作系統下,nginx 使用 epoll 事件模型,得益於此,nginx 在 Linux 操作系統下效率相當高。同時 Nginx 在 OpenBSD 或 FreeBSD 操作系統上採用類似於 epoll 的高效事件模型 kqueue。


可大量平行處理。Nginx 在官方測試的結果中,能夠支持五萬個平行連接,而在實際的運作中,可以支持二萬至四萬個平行鏈接。



0.png Nginx 的模塊與工作原理 0.png

Nginx 由內核和模塊組成,正是有了這麼多模塊的支撐,Nginx 的功能纔會如此強大。Nginx 的模塊從結構上分爲核心模塊、基礎模塊和第三方模塊:

● 核心模塊:HTTP 模塊、EVENT 模塊和 MAIL 模塊

● 基礎模塊:HTTP Access 模塊、HTTP FastCGI 模塊、HTTP Proxy 模塊和 HTTP Rewrite 模塊

● 第三方模塊:HTTP Upstream Request Hash 模塊、Notice 模塊和 HTTP Access Key 模塊。


Nginx 的模塊從功能上分爲如下三類:

● Handlers(處理器模塊)。此類模塊直接處理請求,並進行輸出內容和修改headers信息等操作。Handlers處理器模塊一般只能有一個。

● Filters (過濾器模塊)。此類模塊主要對其他處理器模塊輸出的內容進行修改操作,最後由Nginx輸出。

● Proxies (代理類模塊)。此類模塊是 Nginx 的 HTTP Upstream 之類的模塊,這些模塊主要與後端一些服務比如 FastCGI 等進行交互,實現服務代理和負載均衡等功能。



0.png 爲什麼選擇 Nginx 0.png

Nginx 是一個很牛的高性能Web和反向代理服務器,相比其他服務器,它具有有很多非常優越的特性:

在高連接併發的情況下,Nginx 是 Apache 服務器不錯的替代品:Nginx 在美國是做虛擬主機生意的老闆們經常選擇的軟件平臺之一。能夠支持高達 50,000 個併發連接數的響應。

Nginx作爲負載均衡服務器;Nginx 既可以在內部直接支持 Rails 和 PHP 程序對外進行服務,也可以支持作爲 HTTP代理 服務器對外進行服務。 Nginx採用C進行編寫, 不論是系統資源開銷還是CPU使用效率都比 Perlbal 要好很多。

Nginx 作爲郵件代理服務器:Nginx 同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作爲郵件代理服務器), Last.fm 描述了成功並且美妙的使用經驗。

Nginx 是一個 [#installation 安裝] 非常的簡單, 配置文件非常簡潔(還能夠支持 perl 語法), Bugs 非常少的服務器,Nginx 啓動特別容易, 並且幾乎可以做到 7*24 不間斷運行,即使運行數個月也不需要重新啓動。你還能夠不間斷服務的情況下進行軟件版本的升級 。


目前中國大陸使用 Nginx 網站用戶有:新浪、網易、騰訊,另外知名的微網誌 Plurk 也使用 Nginx。



●本文編號2697,以後想閱讀這篇文章直接輸入2697即可

●輸入m獲取文章目錄

0.gif

↓↓↓ 點擊"閱讀原文" 進入GitHub詳情頁