Nginx 簡介
1. Nginx 是什么?

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