轻量级 Web 服务器
虽然轻量级 Web 服务器有很多共同之处,但是各有各的不同。大多数轻量级 Web 服务器是用 C 编写的,但是实践证明,有些其他实现语言也可以成功地用于实现服务器,这些语言包括 Erlang、Java、Lisp、Lua、Perl、Python 和 Tcl。 由于很多特定的原因,可能会要求选用某种 “不常见” 的语言: - 教学:使用轻量级 Web 服务器来制定一个重要、但是并不太大的目标。这是获得使用某种语言的经验的好方法。
- 虽然用 C 编写的轻量级 Web 服务器大小为 10-50 KB,更高级的语言有 100 KB 到数 MB 的运行时,但整个 Web 服务器的源文件可能只占几千个字节。这种 Web 服务器占用的空间很小,因此比 Apache 更易于与技术伙伴共享。
- 更高级的语言可以使实验更吸引人 —— 例如,添加一个新的 HTTP/1.1 特性可能只需几行源代码。这些轻量级服务器是非常方便的实验材料。
- 将 HTTP 服务器添加到已有的、用高级语言编写的应用程序中只需增加几行源代码。
[1] Athana 可以作为这些主题的例子。它是用 Python 编写的 Web 服务器。它支持 HTTP 多部分(上传)、会话、 cookie 等。从 0.2.1 版开始,Athana 一直被编写在一个单独的、精心组织的源文件中。 如前所述,不同的轻量级 Web 服务器有着不同的优点,它们或多或少独立于编程语言。所有轻量级 Web 服务器都比 Apache 更小、更易于配置。与 Apache 相比,有些轻量级 Web 服务器更快,有些则快得多。有些则强调安全性、重负载下的从容性、可扩展性或者内存占有量。在任何情况下,都可以以一种不适用于 Apache 的方式彻底地理解这些服务器。 哪些特定的产品使这些可能性成为现实?即使只留意 “轻量级” 服务器,面对的也是一个很大的难于管理的产品集合。不过可以将它们按子类来划分:超轻型、关注安全型、支持特定语言型等等。 其中的超轻型 Web 服务器,它们比 Apache 小得多。如此小的应用程序可以直接记住,系统地、严密地加以考虑,以证明 它们的安全性或可伸缩性。小型 Web 服务器包括: - [2] Cheetah Server,用不到一千行的 C 代码编写而成。
- [3] DustMote,一个非常 小的 Web 服务器,用一个大约 3000 字节的 Tcl 源文件实现。
- [4] fnord,大小取决于平台和配置,不超过 20K。虽然很小,但是它支持虚拟主机、CGI 和 keep-alive。
- [5] ihttpd,使用不到 800 行的 C 代码,包括 CGI,并通过
inetd 提供页面。
- [6] im-httpd,非常小的服务器 —— 只有大约 7 KB,链接到
glibc 。而且它也非常快。
- [7] mattows,支持 CGI,只有 600 行 C 代码。
- [8] Scrinchy,虽然很小,不到 30KB,但是支持多种脚本编制语言,包括一种特殊用途的、基于栈的 Sy 脚本语言。
- [9] ZWS 演示了一个即使是使用 500 多行带足够注释的 zsh (!) 编写的应用程序 —— 在这里是一个 HTTP 0.9+ 服务器 —— 也可以有多强大。
体积小并不妨碍这些服务器被正式使用。例如,fnord 可以处理数千个同时进行的连接。 也许轻量级作为一个类别最令人印象深刻的成就是高性能服务器: - [10] cghttpd 是一个小型 Web 服务器,它被理解为使用 2.6 系列内核中可用的异步功能的一个试验品。
- [11] darkhttpd 是一个快速的、单线程的 HTTP/1.1 服务器。
- [12] Gatling 是为高性能设计的。它的特性包括 FTP、IPv6、虚拟主机、CGI 等。
- [13] Kernux 是一个 Linux 内核模块,它实现了一个 HTTP 守护进程。
- [14] lighttpd 是使用率排名第五的 Web 服务器(排名还在上升)。它为很多同时进行的连接进行了优化:“典型的场景是使用 lighttpd 作为一个下载(off-load)服务器,以提供静态内容……”
- [15] LiteSpeed Web Server 是一款轻量级商业 Web 服务器,强调性能和安全性。 LiteSpeed Technologies 公司宣传为静态内容提速了 6 倍,在解释页面方面也有一定的提高。
- [16] Miniature JWS,也称 tjws,它是基于 Java 的 Web 服务器,可以处理 servlet、JSP 和数千个并发连接,而大小只有 77 KB。它的作者声称它 “比 Apache 2.x 快 10%”。
- [17] Yaws 是用 Erlang 编写的一款高性能 HTTP/1.1 服务器。
有些 Web 服务器被实现为类或库,以便嵌入 到较大的应用程序中。 在这些 Web 服务器当中,我发现特别有趣的有: - [18] EHS —— “嵌入式 HTTP 服务器”,被设计为一个 C++ 类,用于嵌入到较大的 C++ 应用程序;还有
- [19] Embedded TCL Web Server,它是一个很普通的 Web 服务器,支持 SSL 和 Basic Authentication,速度非常快 —— 其作者使它至少与 lighthttpd 和 AOLserver 一样快。它是用不到 100 行 Tcl 编写的。
Python 是几种适合不寻常环境的 Web 服务器的实现语言,这些 Web 服务器包括: - cdServer 是一个小型的、用 Python 编写的 HTTP 服务器,它 “被设计用来提供来自 CD-ROM 的(静态)内容” 。它在提供动态内容方面能力有限。
- [20] edna,一款智能的用 Python 编写的 MP3 服务器,它是用 HTTP 实现的。
还有其他一些用 Perl 和其他不出名的语言编写的轻量级 Web 服务器: - [21] Camlserv,用 ocaml 编写的一个完整的 Web 服务器,目标是 “高度交互式的 Web 页面”。它由几千行 ocaml 编写而成,其中大部分代码都与 MySQL 和 HTML 的特殊处理有关。
- [22] dhttpd 用和 Apache 相同的格式记录访问。它支持 CGI,并具有内建的 Perl 解释器、虚拟主机、IPv6、带宽管理和安全性等方面的特性。
- [23] DNHTTPD 是用 Perl 编写的,用于 UNIX®。它支持虚拟主机、SSL 连接、CGI 等。
- [24] Jellybean 是用 Perl 编写的基于 HTTP 的 Perl Object Server。
- [25] lns.http 是一个 Common LISP HTTP/1.1 Web 框架。
- [26] Mongrel 是用 Ruby 编写的、用于 HTTP 的一个库和服务器。
- [27] Nanoweb 是用 PHP 编写的一款快速、健壮的 Web 服务器。它宣称具有丰富的特性,包括完全遵从 HTTP/1.1、访问控制、身份验证、虚拟主机、SSL 兼容性等。
- [28] Naridesh 是用 Perl 编写的 Web 服务器。
- [29] OpenAngel 是用 Perl 编写的。它强调的重点是安全性。
- [30] Xavante 是用 Lua 编写的 HTTP/1.1 Web 服务器。
- [31] XSP 是用 C# 编写的,用于运行 ASP.NET。
有时候可能需要其他一些用 C 编写的、具有不常见的次要优势的轻量级 Web 服务器: - [32] ABYSS 可以在 UNIX 和 Win32 之间移植,其 “目的是成为完全遵从 HTTP/1.1 的 Web 服务器”。它占用的内存很少。
- [33] Anti-Web HTTPD(也称 “Anti-Web”、“awhttpd” 和 “AW”)是一款单进程、无线程、支持 CGI 的服务器,它强调安全性和简单性。
- [34] MHTTPD 支持从外部文件或 LDAP 服务器进行的 MHTTPD Basic Authentication。
- [35] mini-httpd 可以在一个系统线程中处理多个并发请求,但是在主机上占用的内存或 CPU 很少。
- [36] Naken Web 类似于很多其他的轻量级服务器 —— 它支持 Basic Authentication、静态内容等 —— 但是它的作者将它设计为用于 Webcam 操作,并且在 Gumstix、WRT54GL、OpenWrt 和其他新的平台上运行。
- [37] Null httpd 是一款多线程的、简单的、可移植的 Web 服务器。
- [38] Seminole 是一款商业 Web 服务器,内存需求较小,功能较多。
- [39] thttpd throttle,支持
chroot 、 Basic Authentication 等。
当然Aws也是非常不错的,虽然相形之下大它们很多倍~~ |