前 5 大开源 Web 服务器

3 位读者喜欢这篇文章。
System statistics with sar and the /proc filesystem

ajmexico。由 Jason Baker 修改。CC BY-SA 2.0。

统计数据 显示,超过 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 应用程序服务器一起列出。一些示例包括 JBossWildflyGlassfish

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 服务器是什么。请在评论中告诉我们。

Avatar
前 Opensource.com 和开放组织版主/大使。

12 条评论

Robin,很棒的文章。我的大部分经验都来自 Apache。我大约在 1998 或 1999 年开始在 Windows 上使用它。当我在 2001 年开始使用 Linux 时,我将之前的安装切换到该操作系统,并且从那时起多次部署它。我尝试过 NGINX 和 lighttpd,但从未在生产环境中使用过。

多年前,当仍然使用带有 mod_php 的 apache prefork 时,我研究了 nginx 和 fastcgi。与此同时,我研究了使用带有 php-fpm (fastcgi) 的事件 mpm 来推进 apache httpd。

在我的基准测试中,这毫无疑问:apache 完胜 nginx,并且更加稳定。

所有关于 nginx 性能改进的炒作似乎都将其与带有 mod_php 的 prefork apache 进行比较。我从未见过诚实的同类基准测试。我本应发布我的发现,但我只是一个默默无闻的人,甚至没有博客。

很棒的文章。我在 Lighttpd 上获得了一些真正的乐趣。它非常轻巧。哇,谢谢你。

Caddy Webserver 是一个新的 Web 服务器,具有自动 TLS。
https://caddyserver.com.cn

不一定是“现成的”解决方案,但如果您正在设计一些基于 HTTP 的应用程序,则值得考虑:AWS(Ada Web Server,与 Amazon 无关...只是一个不幸的首字母缩写冲突),它是一个库(用 Ada 编写),实现了 HTTP 服务器,可用于实现从简单的“页面服务”服务器到复杂的 HTTP 应用程序。

请参阅 http://libre.adacore.com/tools/aws/

Robin,好文章。做得好!
我只想在列表中添加第六个 Web 服务器:Jetty。虽然是 Tomcat 的一种衍生产品,但它很轻巧,不需要太多定制。但它仍然是一个很棒的 Web 服务器,您可以使用它来制作原型、测试甚至部署生产阶段的应用程序。

你好 Hugo。

感谢您的建议。我将列表限制为前 5 名。它看起来确实很有趣,拥有所有支持,并且隶属于 Eclipse 基金会。

回复 ,作者:Hugo Tavares (未验证)

虽然它不是生产 Web 服务器,但对于开发人员来说,一个简化的桌面替代方案是 http://fenixwebserver.com。主要功能:通过 SSH 隧道进行按钮式协作。免责声明:我是作者。即将推出的版本将是第一个包含用于 localhost SSL 支持的本地证书颁发机构的版本(这是开发使用 power API(如地理位置)的移动 Web 应用程序的关键功能)。

谢谢 Corey,这看起来很有趣,尤其是对于本地开发。

回复 ,作者:Corey (未验证)

Creative Commons License本作品根据 Creative Commons Attribution-Share Alike 4.0 International License 获得许可。
© . All rights reserved.