偶然看到幾個小巧有趣的Web Server程式,覺得有必要拿來分享一下,讓大家除了知道Apache、IIS之外,原來還有更多有趣的選擇。主要介紹了:micro_httpd、mini_httpd、thttpd、lighttpd、shttpd 等無款小巧好用的httpd。
【 micro_httpd - really small HTTP server】
特點:
* 支援安全的 .. 上級目錄過濾
* 支援通用的MIME類型
* 支援簡單的目錄
* 支援目錄列表
* 支援使用 index.html 作為首頁
* Trailing-slash redirection
* 程式總共代碼才200多行
這個httpd適合學習簡單的Web Server編寫學習,因為它只有一個簡單的架構,只能夠處理簡單的靜態頁,可以考慮用來放靜態頁。
官方地址:http://www.acme.com/software/micro_httpd/
:http://www.acme.com/software/micro_httpd/micro_httpd_12dec2005.tar.gz
【 mini_httpd - small HTTP server 】
特點:
* 支援GET、HEAD、POST方法
* 支援CGI功能
* 支援基本的驗證功能
* 支援安全 .. 上級目錄功能
* 支援通用的MIME類型
* 支援目錄列表功能
* 支援使用 index.html, index.htm, index.cgi 作為首頁
* 支援多個根目錄的虛擬機器主機
* 支援標準日誌記錄
* 支援自訂錯誤頁
* Trailing-slash redirection
mini_httpd 也是相對比較適合學習使用,大體實現了一個Web Server的功能,支援靜態頁和CGI,能夠用來放置一些個人簡單的東西,不適宜投入生產使用。
官方地址:http://www.acme.com/software/thttpd/
:http://www.acme.com/software/mini_httpd/mini_httpd-1.19.tar.gz
【 thttpd - tiny/turbo/throttling HTTP server 】
thttpd中是一個簡單,小型,輕便,快速和安全的http伺服器.
簡單:它能夠支援HTTP/1.1協議標準,或者超過了最低水平
小巧:它具有非常少的已耗用時間,因為它不fork子進程來接受新請求,並且非常謹慎的分配記憶體(效能對比表:http://www.acme.com/software/thttpd/benchmarks.html)
便攜:它能夠在大部分的類Unix系統上運行,包括FreeBSD, SunOS 4, Solaris 2, BSD/OS, Linux, OSF等等
快速:它的速度要超過主流的Web伺服器(Apache, NCSA, Netscape),在高負載情況下,它要快的多
安全:它努力的保護主機不受到攻擊,不中斷伺服器
thttpd 類似於lighttpd,對於並發請求不使用fork()來派生子進程處理,而是採用多工(Multiplex)技術來實現。因此效能很好。同時它還有一個特點就是基於URL的檔案流量限制,這對於下載的流量控制而言是非常方便的。象Apache就必須使用外掛程式實現,效率較thttpd低。
thttpd跟lighttpd類似,適合靜態資源類的服務,比片、資源檔、靜態HTML等等的應用,效能應該比較好,同時也適合簡單的CGI應用的場合。
官方地址:http://www.acme.com/software/thttpd/
:http://www.acme.com/software/thttpd/thttpd-2.25b.tar.gz
【 lighttpd - light footprint + httpd = LightTPD 】
Lighttpd是一個德國人領導的開源軟體,其根本的目的是提供一個專門針對高效能網站,安全、快速、相容性好並且靈活的web server環境。具有非常低的記憶體開銷,cpu佔用率低,效能好,以及豐富的模組等特點。
lighttpd 是眾多OpenSource輕量級的web server中較為優秀的一個。支援FastCGI, CGI, Auth, 輸出壓縮(output compress), URL重寫, Alias等重要功能,而Apache之所以流行,很大程度也是因為功能豐富,在lighttpd上很多功能都有相應的實現了,這點對於apache的使用者是非常重要的,因為遷移到lighttpd就必須面對這些問題。
實用起來lighttpd確實非常不錯,apache主要的問題是密集並發下,不斷的fork()和切換,以及較高(相對於 lighttpd而言)的記憶體佔用,使系統的資源幾盡枯竭。而lighttpd採用了Multiplex技術,代碼經過最佳化,體積非常小,資源佔用很低,而且反應速度相當快。
利用apache的rewrite技術,將繁重的cgi/fastcgi任務交給lighttpd來完成,充分利用兩者的優點,現在那台伺服器的負載下降了一個數量級,而且反應速度也提高了一個甚至是2個數量級!
lighttpd 適合靜態資源類的服務,比片、資源檔、靜態HTML等等的應用,效能應該比較好,同時也適合簡單的CGI應用的場合。
官方地址:http://www.lighttpd.net/
:http://www.lighttpd.net/download/lighttpd-1.4.16.tar.gz
【 SHTTPD - Simple HTTPD 】
Shttpd是另一個輕量級的web server,具有比thttpd更豐富的功能特性,支援CGI, SSL, cookie, MD5認證, 還能嵌入(embedded)到現有的軟體裡。最有意思的是不需要設定檔! 由於shttpd可以嵌入其他軟體,因此可以非常容易的開發嵌入式系統的web server,官方網站上稱shttpd如果使用uclibc/dielibc(libc的簡化子集)則開銷將非常非常低。
特點:
* 小巧、快速、不膨脹、無需安裝、簡單的40KB的exe檔案,隨意運行
* 支援GET, POST, HEAD, PUT, DELETE 等方法
* 支援CGI, SSL, SSI, MD5驗證, resumed download, aliases, inetd模式運行
* 標準日誌格式
* 非常簡單整潔的嵌入式API
* dietlibc friendly. NOT that friendly to the uClibc (*)
* 容易定製運行在任意平台:Windows, QNX, RTEMS, UNIX (*BSD, Solaris, Linux)
由於shttpd可以輕鬆嵌入其他程式裡,因此shttpd是較為理想的web server開發原形,開發人員可以基於shttpd開發出自己的webserver!
官方網站:http://shttpd.sourceforge.net/
:http://jaist.dl.sourceforge.net/sourceforge/shttpd/shttpd-1.38.tar.gz