- Cheetah Server,用不到一千行的 C 代码编写而成。
- DustMote,一个非常 小的 Web 服务器,用一个大约 3000 字节的 Tcl 源文件实现。
- fnord,大小取决于平台和配置,不超过 20K。虽然很小,但是它支持虚拟主机、CGI 和 keep-alive。
- ihttpd,使用不到 800 行的 C 代码,包括 CGI,并通过
inetd
提供页面。 - im-httpd,非常小的服务器 —— 只有大约 7 KB,链接到
glibc
。而且它也非常快。 - mattows,支持 CGI,只有 600 行 C 代码。
- Scrinchy,虽然很小,不到 30KB,但是支持多种脚本编制语言,包括一种特殊用途的、基于栈的 Sy 脚本语言。
- ZWS 演示了一个即使是使用 500 多行带足够注释的 zsh (!) 编写的应用程序 —— 在这里是一个 HTTP 0.9+ 服务器 —— 也可以有多强大。
体积小并不妨碍这些服务器被正式使用。例如,fnord 可以处理数千个同时进行的连接。也许轻量级作为一个类别最令人印象深刻的成就是高性能服务器:
- cghttpd 是一个小型 Web 服务器,它被理解为使用 2.6 系列内核中可用的异步功能的一个试验品。
- darkhttpd 是一个快速的、单线程的 HTTP/1.1 服务器。
- Gatling 是为高性能设计的。它的特性包括 FTP、IPv6、虚拟主机、CGI 等。
- Kernux 是一个 Linux 内核模块,它实现了一个 HTTP 守护进程。
- lighttpd 是使用率排名第五的 Web 服务器(排名还在上升)。它为很多同时进行的连接进行了优化:“典型的场景是使用 lighttpd 作为一个下载(off-load)服务器,以提供静态内容……”
- LiteSpeed Web Server 是一款轻量级商业 Web 服务器,强调性能和安全性。 LiteSpeed Technologies 公司宣传为静态内容提速了 6 倍,在解释页面方面也有一定的提高。
- Miniature JWS,也称 tjws,它是基于 Java 的 Web 服务器,可以处理 servlet、JSP 和数千个并发连接,而大小只有 77 KB。它的作者声称它 “比 Apache 2.x 快 10%”。
- Yaws 是用 Erlang 编写的一款高性能 HTTP/1.1 服务器。
有些 Web 服务器被实现为类或库,以便嵌入 到较大的应用程序中。 在这些 Web 服务器当中,我发现特别有趣的有:
- EHS —— “嵌入式 HTTP 服务器”,被设计为一个 C++ 类,用于嵌入到较大的 C++ 应用程序;还有
- Embedded TCL Web Server,它是一个很普通的 Web 服务器,支持 SSL 和 Basic Authentication,速度非常快 —— 其作者使它至少与 lighthttpd 和 AOLserver 一样快。它是用不到 100 行 Tcl 编写的。
Python 是几种适合不寻常环境的 Web 服务器的实现语言,这些 Web 服务器包括:
- cdServer 是一个小型的、用 Python 编写的 HTTP 服务器,它 “被设计用来提供来自 CD-ROM 的(静态)内容” 。它在提供动态内容方面能力有限。我们有几个涉及不受影响的 “live CDs” 的项目,在这些项目中像 cdServer 之类的工具很关键。
- edna,一款智能的用 Python 编写的 MP3 服务器,它是用 HTTP 实现的。
还有其他一些用 Perl 和其他不出名的语言编写的轻量级 Web 服务器:
- Camlserv,用 ocaml 编写的一个完整的 Web 服务器,目标是 “高度交互式的 Web 页面”。它由几千行 ocaml 编写而成,其中大部分代码都与 MySQL 和 HTML 的特殊处理有关。
- dhttpd 用和 Apache 相同的格式记录访问。它支持 CGI,并具有内建的 Perl 解释器、虚拟主机、IPv6、带宽管理和安全性等方面的特性。
- DNHTTPD 是用 Perl 编写的,用于 UNIX®。它支持虚拟主机、SSL 连接、CGI 等。
- Jellybean 是用 Perl 编写的基于 HTTP 的 Perl Object Server。
- lns.http 是一个 Common LISP HTTP/1.1 Web 框架。
- Mongrel 是用 Ruby 编写的、用于 HTTP 的一个库和服务器。
- Nanoweb 是用 PHP 编写的一款快速、健壮的 Web 服务器。它宣称具有丰富的特性,包括完全遵从 HTTP/1.1、访问控制、身份验证、虚拟主机、SSL 兼容性等。
- Naridesh 是用 Perl 编写的 Web 服务器。
- OpenAngel 是用 Perl 编写的。它强调的重点是安全性。
- Xavante 是用 Lua 编写的 HTTP/1.1 Web 服务器。
- XSP 是用 C# 编写的,用于运行 ASP.NET。
有时候您可能需要其他一些用 C 编写的、具有不常见的次要优势的轻量级 Web 服务器:
- ABYSS 可以在 UNIX 和 Win32 之间移植,其 “目的是成为完全遵从 HTTP/1.1 的 Web 服务器”。它占用的内存很少。
- Anti-Web HTTPD(也称 “Anti-Web”、“awhttpd” 和 “AW”)是一款单进程、无线程、支持 CGI 的服务器,它强调安全性和简单性。
- MHTTPD 支持从外部文件或 LDAP 服务器进行的 MHTTPD Basic Authentication。
- mini-httpd 可以在一个系统线程中处理多个并发请求,但是在主机上占用的内存或 CPU 很少。
- Naken Web 类似于很多其他的轻量级服务器 —— 它支持 Basic Authentication、静态内容等 —— 但是它的作者将它设计为用于 Webcam 操作,并且在 Gumstix、WRT54GL、OpenWrt 和其他新的平台上运行。
- Null httpd 是一款多线程的、简单的、可移植的 Web 服务器。
- Seminole 是一款商业 Web 服务器,内存需求较小,功能较多。
- thttpd throttle,支持
chroot
、 Basic Authentication 等。
|
Web 服务器远远不止是 Apache 和 IIS 的天下。您可以发现很多其他的 Web 服务器,它们很小,易于理解,但是又足够快,可以被正式使用。这样的 Web 服务器可以很好地加快您的下一个项目。
学习
- 您可以参阅本文在 developerWorks 全球站点上的 英文原文 。
- LinuxLinks 和 Wikipedia 有一系列的轻量级 Web 服务器。
- 想知道某个站点使用(或者 声称使用)什么服务器软件吗? 请参阅 Netcraft 。
- Netcraft 计算出 lighttpd 占 Web 服务器市场 1.2% (第 5 名)的份额, Serverwatch 则估计 其市场份额的增长是由那些寻求 Apache 替代品的管理员带动的。
- 三名匈牙利学者根据他们分别用 C 和 bash 编写的两个例子撰写了 “Portable minimal Web servers”。
- “Implementing a Lightweight Web Server for Resource Pooling and Scalability” 这篇文章详细描述了这里列出的所有服务器的常见的考虑和用法,虽然 Java 实现语言在它们当中只占少数。
- REBOL 的发明者通过这个用 REBOL 编写的 单页面 Web 服务器 展示该语言的能力。
- 在我们的技术文库中获得更多 面向 Web 开发人员的文章 和 教程。
- 订阅 我们的时事通讯。
获得产品和技术
- 下载免费的 IBM 试用软件,包括 IBM HTTP Server、WebSphere Application Server Community Edition 等流行产品,还有更多其他产品。
讨论
- 加入 developerWorks 社区:浏览 博客、论文、空间 等。