什麼是Nginx

Web開發者發表於2012-07-05

什麼是Nginx

  Nginx ("engine x") 是一個高效能的 HTTP 和 反向代理伺服器,也是一個 IMAP/POP3/SMTP 代理伺服器。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的,第一個公開版本0.1.0釋出於2004年10月4日。其將原始碼以類BSD許可證的形式釋出,因它的穩定性、豐富的功能集、示例配置檔案和低系統資源的消耗而聞名。Nginx 可以在UNIX、GNU/Linux、BSD、Mac OS X、Solaris,以及Microsoft Windows等作業系統中執行。Nginx開發團隊於 2012年7月3日 釋出了最新的 Nginx 1.2.2穩定版本。

  Nginx 官方主頁:http://nginx.org/

  從2004開始,Nginx 已經在眾多流量很大的俄羅斯網站上使用,包括YandexMail.RuVKontakte,以及Rambler

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

  據Netcraft統計,截止2012年7月份,世界上最繁忙的網站中有11.09% 使用Nginx作為其伺服器或者代理伺服器。

特點

  Nginx相較於Apache、lighttpd具有佔有記憶體少,穩定性高等優勢,並且依靠併發能力強,豐富的模組庫以及友好靈活的配置而聞名。 在Linux作業系統下,nginx使用epoll事件模型,得益於此,nginx在Linux作業系統下效率相當高。同時Nginx在OpenBSD或FreeBSD作業系統上採用類似於epoll的高效事件模型kqueue。

Nginx效能概述

  基本的HTTP伺服器特性

  • 處理靜態檔案,索引檔案以及自動索引;開啟檔案描述符快取;
  • 使用快取加速反向代理;簡單負載均衡以及容錯;
  • 遠端FastCGI服務的快取加速支援;簡單的負載均衡以及容錯;
  • 模組化的架構。過濾器包括gzip壓縮、ranges支援、chunked響應、XSLT,SSI以及影像縮放。在SSI 過濾器中,一個包含多個SSI的頁面,如果經由FastCGI或反向代理處理,可被並行處理;
  • 支援SSL,TLS SNI。

  其他的HTTP伺服器特性

  • 基於名字和IP的虛擬主機;
  • Keep-alive和pipelined連線支援;
  • 靈活的配置;
  • 重新載入配置以及線上升級時,不需要中斷正在處理的請求;
  • 自定義訪問日誌格式,帶快取的日誌寫操作以及快速日誌輪轉;
  • 3xx-5xx錯誤程式碼重定向;
  • 重寫(rewrite)模組;
  • 基於客戶端IP地址和HTTP基本認證機制的訪問控制;
  • 支援PUT、DELETE、MKCOL、COPY以及MOVE方法;
  • 支援FLV流和MP4流;
  • 速度限制;
  • 來自同一地址的同時連線數或請求數限制;
  • 嵌入Perl語言。

  郵件代理伺服器特性

  • 使用外部HTTP認證伺服器重定向使用者到IMAP/POP3後端;
  • 使用外部HTTP認證伺服器認證使用者後重定向連線到內部SMTP後端;
  • 支援的認證方式:
    • POP3: USER/PASS, APOP, AUTH LOGIN/PLAIN/CRAM-MD5;
    • IMAP: LOGIN, AUTH LOGIN/PLAIN/CRAM-MD5;
    • SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;
  • SSL支援;
  • STARTTLS和STLS支援。

  架構和擴充套件性

  • 一個主程式和多個工作程式,工作程式以非特權使用者執行;
  • 支援的事件機制:kqueue(FreeBSD 4.1+)、epoll(Linux 2.6+)、rt signals(Linux 2.2.19+)、/dev/poll(Solaris 7 11/99+)、event ports(Solaris 10)、select以及poll;
  • 眾多支援的kqueue特性包括EV_CLEAR、EV_DISABLE(臨時禁止事件)、NOTE_LOWAT、EV_EOF,可用資料的數量,錯誤程式碼;
  • 支援sendfile(FreeBSD 3.1+, Linux 2.2+, Mac OS X 10.5)、sendfile64(Linux 2.4.21+)和sendfilev(Solaris 8 7/01+);
  • 檔案AIO(FreeBSD 4.3+, Linux 2.6.22+);
  • Accept-filters(FreeBSD 4.1+)和 TCP_DEFER_ACCEPT(Linux 2.4+);
  • 10000個非活躍的HTTP keep-alive連線僅佔用約2.5M記憶體;
  • 儘可能避免資料拷貝操作。

  測試過的作業系統和平臺

  • FreeBSD 3  — 8 / i386; FreeBSD 5  — 9 / amd64;
  • Linux 2.2  — 2.6 / i386; Linux 2.6 / amd64;
  • Solaris 9 / i386, sun4u; Solaris 10 / i386, amd64, sun4v;
  • MacOS X / ppc, i386;
  • Windows XP, Windows Server 2003.

相關文章