Nginx 簡(jiǎn)介
1. Nginx 是什么?

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