engine是由淘寶網發起的Web服務器項目。它在Nginx的基礎上,針對大訪問量網站的需求,添加了不少高級功能和特性。Tengine的性能和穩定性已經在大型的網站如淘寶網,天貓商城等獲得了很好的檢驗。它的最終目標是打造一個高效、穩定、安全、易用的Web平臺。nginx
Nginx的特性:正則表達式
一、基本的HTTP服務器特性後端
- 處理靜態文件,索引文件以及自動索引;打開文件描述符緩存;
- 使用緩存加速反向代理;簡單負載均衡以及容錯;
- 遠程FastCGI,uwsgi,SCGI,和memcached服務的緩存加速支持;簡單的負載均衡以及容錯;
- 模塊化的架構。過濾器包括gzip壓縮、ranges支持、chunked響應、XSLT,SSI以及圖像縮放。在SSI 過濾器中,一個包含多個SSI的頁面,若是經由FastCGI或反向代理處理,可被並行處理;
- 支持SSL,TLS SNI。
二、其餘的HTTP服務器特性緩存
- 基於名字和IP的虛擬主機;
- Keep-alive和pipelined鏈接支持;
- 靈活的配置;
- 從新加載配置以及在線升級時,不須要中斷正在處理的請求;
- 自定義訪問日誌格式,帶緩存的日誌寫操做以及快速日誌輪轉;
- 3xx-5xx錯誤代碼重定向;
- 重寫(rewrite)模塊:使用正則表達式改變URI;
- 根據客戶端地址執行不一樣的功能;
- 基於客戶端IP地址和HTTP基本認證機制的訪問控制;
- 支持驗證HTTP referer;
- 支持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支持。
Tengine的特性:服務器
- 繼承Nginx-1.4.7的全部特性,100%兼容Nginx的配置;
- 動態模塊加載(DSO)支持。加入一個模塊再也不須要從新編譯整個Tengine;
- 支持SPDY v3協議,自動檢測同一端口的SPDY請求和HTTP請求;
- 流式上傳到HTTP後端服務器或FastCGI服務器,大量減小機器的I/O壓力;
- 更增強大的負載均衡能力,包括一致性hash模塊、會話保持模塊,還能夠對後端的服務器進行主動健康檢查,根據服務器狀態自動上線下線;
- 輸入過濾器機制支持。經過使用這種機制Web應用防火牆的編寫更爲方便;
- 支持設置proxy、memcached、fastcgi、scgi、uwsgi在後端失敗時的重試次數
- 動態腳本語言Lua支持。擴展功能很是高效簡單;
- 支持管道(pipe)和syslog(本地和遠端)形式的日誌以及日誌抽樣;
- 支持按指定關鍵字(域名,url等)收集Tengine運行狀態;
- 組合多個CSS、JavaScript文件的訪問請求變成一個請求;
- 自動去除空白字符和註釋從而減少頁面的體積
- 自動根據CPU數目設置進程個數和綁定CPU親緣性;
- 監控系統的負載和資源佔用從而對系統進行保護;
- 顯示對運維人員更友好的出錯信息,便於定位出錯機器;
- 更強大的防攻擊(訪問速度限制)模塊;
- 更方便的命令行參數,如列出編譯的模塊列表、支持的指令等;
- 能夠根據訪問文件類型設置過時時間;
架構和擴展性(Nginx)架構
- 一個主進程和多個工做進程,工做進程以非特權用戶運行;
- 支持的事件機制: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+);
- DIRECTIO (FreeBSD 4.4+, Linux 2.4+, Solaris 2.6+, Mac OS X);
- 支持Accept-filters(FreeBSD 4.1+, NetBSD 5.0+)和 TCP_DEFER_ACCEPT(Linux 2.4+);
- 10000個非活躍的HTTP keep-alive鏈接僅佔用約5M內存;
- 儘量避免數據拷貝操做。
參考資料:負載均衡