1. 程式人生 > >轉載一篇開源http伺服器(C語言)

轉載一篇開源http伺服器(C語言)

1、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

2、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

3、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

4、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

5、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