Nginx 簡介
1. Nginx 是什么?

Nginx (engine x)是一個開源、高性能的 HTTP 和反向代理 Web 服務(wù)器,同時也提供了 IMAP/POP3/SMTP 服務(wù)”。
首先,對 Web 服務(wù)器做一個簡要說明:
Web 服務(wù)器一般指網(wǎng)站服務(wù)器,是指駐留于因特網(wǎng)上某種類型計算機的程序,可以向瀏覽器等 Web 客戶端提供文檔,也可以放置網(wǎng)站文件,讓全世界瀏覽。可以放置數(shù)據(jù)文件,讓全世界下載。
常見的 Web 服務(wù)器有: Apache、Nginx、微軟的 IIS 和 Tomcat。比如當(dāng)我啟動 Nginx 服務(wù)后,服務(wù)監(jiān)聽服務(wù)器上的端口,當(dāng)從外面訪問這個 ip+ 端口 的地址時,我們能對應(yīng)訪問服務(wù)器上的某些靜態(tài)文件,或者動態(tài)服務(wù)響應(yīng),對相應(yīng)的 http 請求進行處理并返回某個結(jié)果。這樣就是通過瀏覽器和 Web 服務(wù)器(也就是 Nginx )進行交互。
Nginx 是由俄羅斯的工程師 Igor Sysoev 在 Rambler 集團任職系統(tǒng)管理員時利用業(yè)余時間所開發(fā)高性能 web 服務(wù),官方測試 Nginx 能夠支撐 5 萬并發(fā)鏈接,并且 cpu、內(nèi)存等資源消耗卻非常低,運行非常穩(wěn)定,所以現(xiàn)在很多知名的公司都在使用 Nginx 或者在此基礎(chǔ)上進行了二次開發(fā),包括淘寶、新浪、百度等。對于中小型企業(yè)而言,開源免費而又性能強大的 Nginx 必然也是首選,后續(xù)我們將看到一組統(tǒng)計數(shù)據(jù)來說明 Nginx 的應(yīng)用之廣泛。
2. Nginx 使用場景
Nginx 的使用場景如下:
2.1 HTTP 服務(wù)器
Nginx 作為 Web 服務(wù)器能獨立提供 Http 服務(wù)。另外,我們常常通過 Nginx 作為靜態(tài)資源服務(wù)器來訪問服務(wù)器上的靜態(tài)資源,比如對于最新熱門的前后端分離架構(gòu),前端打好包后直接放到某個地址,在 Nginx 配置后可以通過 Nginx 來訪問主機上的前端頁面。
2.2 反向代理
反向代理(Reverse Proxy)方式是指以代理服務(wù)器來接受 Internet 上的連接請求,然后將請求轉(zhuǎn)發(fā)給內(nèi)部網(wǎng)絡(luò)上的服務(wù)器,并將從服務(wù)器上得到的結(jié)果返回給 Internet 上請求連接的客戶端,此時代理服務(wù)器對外就表現(xiàn)為一個反向代理服務(wù)器。這樣的好處是,將不暴露內(nèi)部的服務(wù)地址,只統(tǒng)一使用一個公共出口,通過 URI 匹配轉(zhuǎn)發(fā)到不同的內(nèi)部服務(wù)處理請求。
2.3 負載均衡
負載均衡也是 Nginx 的一個高頻使用場景,對于下游存在的多個相同服務(wù),可以將請求采用某種策略(隨機、輪詢、權(quán)重)發(fā)到相應(yīng)的服務(wù)處理。這樣由于多個相同服務(wù)的存在,可以實現(xiàn)高可用功能,在一個服務(wù)不可用時,Nginx 會自動發(fā)現(xiàn)并將其剔出服務(wù)集群,將請求轉(zhuǎn)發(fā)給正常的服務(wù)進行處理。
2.4 第三方插件
基于第三方插件,Nginx 可以完成各種各樣復(fù)雜的功能,全方位滿足程序員的想法。比如在 Nginx 中引入 lua 模塊,可以實現(xiàn)對 Http 請求更細粒度的限制,包括限速、限流、校驗認證等等。后續(xù),在 Nginx 上發(fā)展出來的 OpenResty 已經(jīng)應(yīng)用到了微服務(wù)網(wǎng)關(guān)方向。
3. Web 服務(wù)器的市場情況
Netcraft公司官網(wǎng) 每月公布的全球 Web 服務(wù)器調(diào)查報告“Web Server Survey”是當(dāng)前人們了解全球網(wǎng)站數(shù)量以及服務(wù)器市場分額情況的主要參考依據(jù),2019 年 12 月份的報告目前已經(jīng)發(fā)布,我們來一睹為快。
可以明顯看到,在 2019 年的年末,Nginx 已經(jīng)確確實實處于 Web 服務(wù)器市場的領(lǐng)先地位,成功超過了老大哥 Apache,千年老二至此翻身當(dāng)上了大哥。