Nginx簡介

常見的Web伺服器產品

目前市場上比較流行的Web伺服器主要有Apache、Microsoft IIS、Sun、Nginx、Tomcat、Lighttpd等。

由上圖可以看出Nginx的市場佔有率越來越高。但是在介紹本篇文章的主角——Nginx之前,我們還是有必要來簡單了解下其他幾個產品。

Apache伺服器(httpd)

Apache伺服器是Apache軟體基金會下面的一款Web伺服器,平時我們將這個伺服器稱為httpd。這款伺服器和其他Web伺服器比起來特性最全,並且運行速度快,性能相對穩定,而且擴展功能豐富。

Apache Web伺服器是當今Web伺服器市場中的領軍產品,但在具體的使用過程中,它仍然在某些方面表現不足——比如性能方面。

IIS

IIS,是Internet InformationServices的縮寫。IIS不僅僅是一款Web伺服器,同時還包含了Gopher Server(Web上一種資訊查找系統)和FTP Server,並且可以用於HTTP Server、FTP Server、NNTP Server或者SMTP Server。我們通過IIS不僅僅可以發布網頁,它還可以提供新聞服務、文件和應用程式服務、郵件服務等。

IIS的功能非常強大,但是缺點也顯而易見——IIS和Window平台強綁定。

Tomcat伺服器

Tomcat也是Apache軟體基金會下面的一款產品。其實Tomcat的「本職工作」是一個Servlet容器,只是附帶了Web伺服器的功能。因此Tomcat在處理靜態HTML頁面方面的能力不如Apache這些職業選手。

但是這並不影響他們成為「好基友」。在前後端分離的開發模式中經常使用Apache來處理靜態頁面,用Tomcat來配合處理動態請求。

Lighttpd伺服器

Lighttpd伺服器來自德國的一個開源輕量級Web伺服器軟體,它在2004年左右開始取得了高速發展。

Lighttpd的急速發展得益於它專門針對高性能網站,提供了一套安全、快速、兼容性良好並且靈活的Web Server環境。同時,它具有非常低的記憶體開銷、CPU佔用率低以及模組豐富等特點,支援FastCGI、Output Compress(輸出壓縮)、URL重寫等絕大多數Apache具有的重要功能,是Apache的絕好替代者。

作為輕量級伺服器,Lighttpd與Apache等大型Web伺服器軟體相比,其在功能上存在不足和部分缺陷,比如Proxy功能不完善、對編碼支援不完善等缺點。

Nignx是什麼

Nginx是一款免費開源的高性能HTTP伺服器及反向代理伺服器(ReverseProxy)產品,同時,它還可以提供IMAP/POP3代理服務等功能。在實際的使用中,Nginx還可以提供更多更豐富的功能,我們將在下一節介紹它的功能。

Nginx的官方網站為//www.nginx.org

Nginx不斷成長和發展,以其穩定的性能、豐富的功能集、低系統資源的消耗而逐漸被全球Web伺服器使用者認可。

Nignx主要功能

Nginx伺服器以其功能豐富著稱於世。它既可以作為HTTP伺服器,也可以作為反向代理伺服器或者郵件伺服器;能夠快速響應靜態頁面(HTML)的請求;支援FastCGI、SSL、Virtual Host、URL Rewrite、HTTP Basic Auth、Gzip等大量使用功能;並且支援更多的第三方功能模組的擴展。

可以將Nginx的功能分為三個部分:基本HTTP服務、高級HTTP服務和郵件服務等三大類。

1. 基礎的Http服務

在Nginx提供的基本HTTP服務中,主要包含以下功能特性:

  • 處理靜態文件(如HTML靜態網頁及請求);處理索引文件以及支援自動索引。(常用功能
  • 打開並自行管理文件描述符快取。
  • 提供反向代理服務,並且可以使用快取加速反向代理,同時完成簡單負載均衡及容錯。(常用功能
  • 提供遠程FastCGI服務的快取機制,加速訪問,同時完成簡單的負載均衡以及容錯。
  • 使用Nginx的模組化特性提供過濾器功能。Nginx基本過濾器包括gzip壓縮、ranges支援、chunked響應、XSLT、SSI以及影像縮放等。其中,針對包含多個SSI的頁面,經由FastCGI或反向代理,SSI過濾器可以並行處理。
  • 支援HTTP下的安全套接層安全協議SSL。

2. 高級的Http服務

在Nginx提供的高級HTTP服務中,主要包含以下功能特性:

  • 支援基於名字和IP的虛擬主機設置;
  • 支援HTTP/1.0中的KEEP-Alive模式和管線(PipeLined)模型連接。
  • 支援重新載入配置以及在線升級時,無須中斷正在處理的請求。
  • 自定義訪問日誌格式、帶快取的日誌寫操作以及快速日誌輪轉。後面章節會討論其具體應用。
  • 提供3xx~5xx錯誤程式碼重定向功能。後面章節會討論其具體應用。
  • 支援重寫(Rewrite)模組擴展。後面章節會討論其具體應用。
  • 支援HTTP DAV模組,從而為Http WebDAV提供PUT、DELETE、MKCOL、COPY以及MOVE方法。
  • 支援FLV流和MP4流傳輸。
  • 支援網路監控,包括基於客戶端IP地址和HTTP基本認證機制的訪問控制、速度限制、來自同一地址的同時連接數或請求數限制等。
  • 支援嵌入Perl語言。

3. 郵件代理服務

Nginx提供郵件代理服務也是其基本開發需求之一,主要包含以下功能特性:

  • 支援使用外部HTTP認證伺服器重定向用戶到IMAP/POP3後端,並支援IMAP認證方式(LOGIN、AUTH LOGIN/PLAIN/CRAM-MD5)和POP3認證方式(USER/PASS、APOP、AUTH LOGIN/PLAIN/CRAM-MD5)。
  • 支援使用外部HTTP認證伺服器認證用戶後重定向連接到內部SMTP後端,並支援SMTP認證方式(AUTH LOGIN/PLAIN/CRAM-MD5)。
  • 支援郵件代理服務下的安全套接層安全協議SSL。
  • 支援純文本通訊協議的擴展協議STARTTLS。
Tags: