Nginx(engine x) 是一個高性能的 HTTP和反向代理服務器軟件,也是一個 IMAP/POP3/SMTP服務器軟件。 Nginx 是由 Igor Sysoev 為俄羅斯訪問量第二的 Rambler.ru 站點開發的。Nginx 將源代碼以類BSD許可證的形式發布,因它的穩定性、豐富的功能集、示例配置文件和低系統資源的消耗而聞名。
Nginx 可以在大多數 Unix like OS 上編譯運行,并有 Windows 移植版。 Nginx 的1.4.0穩定版已經于2013年4月24日發布,一般情況下,對于新建站點,建議使用最新穩定版作為生產版本,已有站點的升級急迫性不高。Nginx 的源代碼使用 2-clause BSD-like license。
Nginx 是一個很強大的高性能Web和反向代理服務器,它具有很多非常優越的特性:在高連接并發的情況下,Nginx是Apache服務器不錯的替代品:Nginx在美國是做虛擬主機生意的老板們經常選擇的軟件平臺之一。能夠支持高達 50,000 個并發連接數的響應,感謝Nginx為我們選擇了 epoll and kqueue作為開發模型。
1.服務器
Nginx作為負載均衡服務器:Nginx 既可以在內部直接支持 Rails 和 PHP 程序對外進行服務,也可以支持作為 HTTP代理服務器對外進行服務。Nginx采用C進行編寫,不論是系統資源開銷還是CPU使用效率都比 Perlbal 要好很多。
2.代碼
Nginx代碼完全用C語言從頭寫成,已經移植到許多體系結構和操作系統,包括:Linux、FreeBSD、Solaris、Mac OS X、AIX以及Microsoft Windows。Nginx有自己的函數庫,并且除了zlib、PCRE和OpenSSL之外,標準模塊只使用系統C庫函數。而且,如果不需要或者考慮到潛在的授權沖突,可以不使用這些第三方庫。
3.代理服務器
作為郵件代理服務器:Nginx 同時也是一個非常優秀的郵件代理服務器(最早開發這個產品的目的之一也是作為郵件代理服務器),Last.fm 描述了成功并且美妙的使用經驗。
Nginx 是一個安裝非常的簡單、配置文件非常簡潔(還能夠支持perl語法)、Bugs非常少的服務器。Nginx 啟動特別容易,并且幾乎可以做到7*24不間斷運行,即使運行數個月也不需要重新啟動。你還能夠不間斷服務的情況下進行軟件版本的升級。
1.支持操作系統
FreeBSD 3.x,4.x,5.x,6.x i386; FreeBSD 5.x,6.x amd64;
Linux 2.2,2.4,2.6 i386; Linux 2.6 amd64;
Solaris 8 i386; Solaris 9 i386 and sun4u; Solaris 10 i386;
MacOS X (10.4) PPC;
Windows XP,Windows Server 2003和Windows 7等。
2.結構與擴展
一個主進程和多個工作進程。工作進程是單線程的,且不需要特殊授權即可運行;
kqueue (FreeBSD 4.1+),epoll (Linux 2.6+),rt signals (Linux 2.2.19+),/dev/poll (Solaris 7 11/99+),select,以及 poll 支持;
kqueue支持的不同功能包括 EV_CLEAR,EV_DISABLE (臨時禁止事件), NOTE_LOWAT,EV_EOF,有效數據的數目,錯誤代碼;
sendfile (FreeBSD 3.1+),sendfile (Linux 2.2+),sendfile64 (Linux 2.4.21+),和 sendfilev (Solaris 8 7/01+) 支持;
輸入過濾 (FreeBSD 4.1+) 以及 TCP_DEFER_ACCEPT (Linux 2.4+) 支持;
10,000 非活動的 HTTP keep-alive 連接僅需要 2.5M內存。
最小化的數據拷貝操作;
其他HTTP功能:
基于IP 和名稱的虛擬主機服務;
Memcached 的 GET 接口;
支持 keep-alive 和管道連接;
靈活簡單的配置;
重新配置和在線升級而無須中斷客戶的工作進程;
可定制的訪問日志,日志寫入緩存,以及快捷的日志回卷;
4xx-5xx錯誤代碼重定向;
基于 PCRE 的 rewrite 重寫模塊;
基于客戶端IP 地址和 HTTP 基本認證的訪問控制;
PUT,DELETE,和 MKCOL 方法;
支持 FLV (Flash 視頻);
帶寬限制。
3.實驗特性
內嵌的 perl;
通過 aio_read()/aio_write() 的套接字工作的實驗模塊,僅在 FreeBSD 下;
對線程的實驗化支持,FreeBSD 4.x 的實現基于 rfork();
Nginx 主要的英語站點是 http://sysoev. ru/en/;
英語文檔草稿由 Aleksandar Lazic 完成 點擊。
4.HTTP基礎功能
處理靜態文件,索引文件以及自動索引;
反向代理加速(無緩存),簡單的負載均衡和容錯;
FastCGI,簡單的負載均衡和容錯;
模塊化的結構。過濾器包括gzipping,byte ranges,chunked responses,以及 SSI-filter。在SSI過濾器中,到同一個 proxy 或者 FastCGI 的多個子請求并發處理;
SSL 和 TLS SNI 支持;
IMAP/POP3代理服務功能:
使用外部 HTTP 認證服務器重定向用戶到 IMAP/POP3 后端;
使用外部 HTTP 認證服務器認證用戶后連接重定向到內部的 SMTP 后端;
5.其他HTTP功能
基于名稱和基于IP的虛擬服務器;
Keep-alive and pipelined connections support;保持活動和支持管線連接;
Flexible configuration;靈活的配置;
Reconfiguration and online upgrade without interruption of the client processing;重載配置,無間斷程序升級;
Access log formats,bufferred log writing,and quick log rotation;訪問日志格式,bufferred日志寫,快速登錄旋轉;
3xx-5xx error codes redirection; 3xx的- 5xx錯誤代碼重定向;
The rewrite module;重寫模塊;
Access control based on client IP address and HTTP Basic authentication;基于客戶端IP地址訪問控制和HTTP基本認證;
The PUT,DELETE,MKCOL,COPY and MOVE methods; 提交,刪除,MKCOL,復制和移動方法;
FLV streaming;FLV視頻流;
Speed limitation;速度限制;
Limitation of simultaneous connections or requests from one address.限制同個IP地址請求數量。
Embedded perl.嵌入式的Perl。
郵件代理服務器功能
用戶重定向到IMAP/POP3后端使用外部HTTP認證服務器;
User authentication using an external HTTP authentication server and connection redirection to internal SMTP backend;用戶身份驗證使用外部HTTP認證服務器和連接重定向到內部的SMTP后端;
Authentication methods:驗證方法:
POP3: USER/PASS,APOP,AUTH LOGIN/PLAIN/CRAM-MD5;的POP3:用戶名/密碼,的APOP,AUTH的LOGIN/PLAIN/CRAM-MD5;
IMAP: LOGIN,AUTH LOGIN/PLAIN/CRAM-MD5; IMAP的:登錄,AUTH的LOGIN/PLAIN/CRAM-MD5;
SMTP: AUTH LOGIN/PLAIN/CRAM-MD5;的SMTP:AUTH的LOGIN/PLAIN/CRAM-MD5;
SSL support; SSL支持;
STARTTLS and STLS support. STARTTLS的和補充的支持。
認證方法
POP3: POP3 USER/PASS,APOP,AUTH LOGIN PLAIN CRAM-MD5;
IMAP: IMAP LOGIN;
SMTP: AUTH LOGIN PLAIN CRAM-MD5;
SSL 支持;
在 IMAP 和 POP3 模式下的 STARTTLS 和 STLS 支持。