统计数据 显示,超过 80% 的 Web 应用程序和网站由开源 Web 服务器驱动。在本文中,我将介绍最流行的开源 Web 服务器,并简要回顾它们的历史、技术、功能等。我还将提供一些提示,以便您可以轻松部署其中一个流行的 Web 服务器。
根据 维基百科,Web 服务器是“一种计算机系统,通过 HTTP 处理请求,HTTP 是用于在万维网上分发信息的基本网络协议。该术语可以指整个系统,或专门指接受和监督 HTTP 请求的软件。”在本文中,我们讨论的是专门处理最终用户 Web 请求的软件。
Apache HTTP 服务器
Apache HTTP 服务器(通常称为 httpd,或简称为 Apache)于 1995 年首次发布,并在 2015 年 2 月庆祝了其 20 周年。Apache 为全球 52% 的网站 提供支持,是迄今为止最流行的 Web 服务器。
虽然 Apache httpd 最常见于在 Linux 上运行,但您也可以在 OS X 和 Windows 上部署 Apache。毫不奇怪,Apache 在 Apache License version 2 下获得许可。Web 服务器本身使用模块化架构,其中可以加载额外的模块来扩展其功能。例如,加载 mod_proxy 将允许在您的服务器上使用代理/网关,而 mod_proxy_balancer 将为所有支持的协议启用负载均衡。从 2.4 版本开始,Apache 还通过一个新的模块 mod_http2 支持 HTTP/2。
由于 Apache HTTP 服务器自 1996 年以来一直是最流行的 Web 服务器,因此它“受益于出色的文档和来自其他软件项目的集成支持”。您可以在 Apache 基金会 项目页面上找到更多信息。
NGINX
Igor Sysoev 于 2002 年开始开发 NGINX,并于 2004 年首次公开发布。NGINX 的开发是为了解决所谓的 C10K 问题,这是“如何设计一个可以处理一万个并发连接的 Web 服务器?”的缩写。NGINX 在开源 Web 服务器使用率列表中排名第二,运行着略高于 30% 的网站。
NGINX 依赖于异步事件驱动架构,以帮助实现其处理大量并发会话的目标。由于其较低的资源利用率和易于扩展的能力,它已成为管理员中非常流行的 Web 服务器。
NGINX 在类似 BSD 的许可下发布,不仅可以部署为 Web 服务器,还可以部署为代理服务器或负载均衡器。您可以在 NGINX 社区站点上找到更多信息。
Apache Tomcat
Apache Tomcat 是一个开源 Java servlet 容器,充当 Web 服务器。Java servlet 是一个 Java 程序,它扩展了服务器的功能。尽管 servlet 可以响应任何类型的请求,但它们最常实现托管在 Web 服务器上的应用程序。这种 Web servlet 是 Java 对应物,对应于其他动态 Web 内容技术,例如 PHP 和 ASP.NET。Tomcat 的代码库于 1999 年由 Sun Microsystems 捐赠给 Apache 软件基金会,并于 2005 年成为顶级的 Apache 项目。目前,它为略低于 1% 的网站 提供支持。
Apache Tomcat 在 Apache License version 2 下发布,通常用于运行 Java 应用程序。但是,它可以扩展 Coyote,以执行普通 Web 服务器的角色,该服务器将本地文件作为 HTTP 文档提供服务。更多信息可以在 项目网站上找到。
Apache Tomcat 通常与其他开源 Java 应用程序服务器一起列出。一些示例包括 JBoss、Wildfly 和 Glassfish。
Node.js
Node.js 是一个服务器端 JavaScript 环境,用于网络应用程序,例如 Web 服务器。Node.js 的市场份额较小,为 0.2% 的网站 提供支持。Node.js 最初由 Ryan Dahl 于 2009 年编写。Node.js 项目由 Node.js 基金会管理,并由 Linux 基金会的协作项目计划推动。
Node.js 与其他流行的 Web 服务器之间的区别在于,它主要是一个跨平台运行时环境,用于构建网络应用程序。Node.js 应用了一种能够实现异步 I/O 的事件驱动架构。这些设计选择优化了 Web 应用程序中的吞吐量和可扩展性,从而可以运行实时通信和浏览器游戏。Node.js 还突出了 Web 开发堆栈的差异,其中 Node.js 显然是 HTML、CSS 和 JavaScript 堆栈的一部分,而 Apache 或 NGINX 是许多不同软件堆栈的一部分。
Node.js 在 多种许可证下发布;更多信息可在 项目网站上找到。
Lighttpd
Lighttpd(发音为“lightly”)于 2003 年 3 月首次发布。它目前为大约 0.1% 的网站 提供支持,并在 BSD 许可下分发。
Lighttpd 以其低内存占用、低 CPU 负载和速度优化而著称。它使用事件驱动架构,针对大量并行连接进行了优化,并支持 FastCGI、SCGI、Auth、输出压缩、URL 重写和更多功能。Lighttpd 是 Catalyst 和 Ruby on Rails Web 框架的流行 Web 服务器。在 项目主页上查找更多信息。
提示
如果您想尝试其中一个流行的 Web 服务器,我强烈建议您下载 LAMP(Linux、Apache、MySQL、PHP)或 LEMP(Linux、NGINX、MySQL、PHP)堆栈。有许多这样的堆栈可用,例如,在 Apache 和 PHP 版本中提供不同的风格。它们通常以一键安装程序的形式提供,或者在 Linux 上的软件包/软件管理器中提供。
成功完成安装过程后,您可以启动 Web 服务器,并尝试一个 Hello World 示例。这是开始探索您的 Web 服务器的来龙去脉以及 Web 服务器如何更普遍地工作的好方法。
总结
这绝不是 Web 服务器的详尽列表。我收录了一些最流行的 Web 服务器,并查看了它们支持的技术。如果您对更多细节感兴趣,尤其是 Apache 和 NGINX 的差异,我建议您阅读这篇关于选择 Web 服务器的 实际考虑因素 的文章。
当然,我们一直很好奇您出于 Web 开发或托管需求而选择的 Web 服务器是什么。请在评论中告诉我们。
12 条评论