统计数据表明,超过 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)堆栈。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 条评论