Nginx vs Apache:头对头比较和如何选择

更新时间:2022-04-19 / 文章作者:Timothy Shim

以上皆是 Nginx的 阿帕奇 是具有丰富功能集和高性能的成熟产品。 它们共享共同的开源来源,您可以将它们部署在 Windows 或 Linux 服务器上。 

但是,一些关键差异可能会让您选择其中一个。

例如,Apache 是一个全面的解决方案,它支持许多开箱即用的不同技术和模块。 相比之下,Nginx 依赖第三方模块来扩展其功能。

看看哪个 Web服务器 可能更适合您的需求,让我们更深入地研究这些选项。

Apache – 最初的 Hero Web 服务器

阿帕奇

创建于 1995 年 罗伯特·麦库尔 Apache 最初被称为“Apache HTTP 服务器项目”(因此得名),旨在创建一个强大的商业级服务器,即使进行修改也可以免费使用。 它很快就流行起来,因为它可以在许多不同的操作系统上运行,从 Unix 到 Windows。

由于这种长期流行,我认为 Apache 是“原始英雄”网络服务器。 它是健壮的、有据可查的,并在 Apache 软件基金会的支持下得到了一个开放的开发者社区的支持。

Nginx——新时代的泰坦

Nginx的

Nginx(发音为“Engine X”)是 HTTP 和反向代理服务器、邮件代理服务器和通用 TCP/UDP 代理服务器,用于托管各种规模的网站和应用程序。 它首先由俄罗斯开发商公开发布 Igor Sysoev. Nginx 最初的目标是解决 Apache 难以管理的 C10K 问题。 

另请阅读

Nginx 和 Apache 之间的显着差异

结构

Nginx 和 Apache 在其核心架构上有一些相似之处。 例如,它们都使用主从进程来提高性能。 他们甚至有类似的配置文件。 然而,架构风格的差异导致了显着的宽视角性能差异。

Nginx 具有资源友好的事件驱动架构,在负载下使用少量但恒定的内存。 此特性使其非常适合托管具有高流量水平或具有间歇性流量峰值的网站。

Apache 的进程驱动架构通过专用线程处理每个连接,这需要更多内存。 但是,它在具有更多 CPU 内核和 RAM 的机器上的重负载下可以更好地扩展。

内存使用

Nginx 以高性能和低资源消耗着称。 另一方面,Apache 可能会占用大量内存,尤其是在运行多个服务器块时。 虽然两者都使用内存来处理 HTTP 请求,但 Nginx 更轻量级。 

Apache 的设计意味着它为每个连接生成一个线程,并且每个线程将使用一定数量的 RAM。 随着流量的增加,这可能会导致问题,因为需要更多的 RAM,尤其是在内存较少的服务器上。 Apache 还为每个请求创建新进程,即使来自同一个用户。

相比之下,Nginx 使用一个进程一次处理多个连接。 

PHP 处理

因为这两个 Web 服务器都主要与 PHP,他们如何处理代码意味着巨大的性能潜力。 Nginx 默认不直接执行 PHP。 相反,它将请求传递给 PHP-FPM (FastCGI进程管理器),它处理请求并将响应发送回 Nginx,然后 Nginx 将内容返回给客户端。

由于 Nginx 不等待 PHP-FPM 的响应来服务另一个请求(类似于它在提供静态内容时不等待客户端的响应),因此 Nginx 可以同时处理比 Apache 能够管理的更多的请求。

Apache 使用一个名为 mod_php 的模块来执行 PHP 代码。 在此模型中,每次 HTTP 请求进入时,Apache 都会生成一个新进程或线程(取决于它的配置方式)来处理该请求。 该进程还负责处理该请求中的任何 PHP 请求。

这个模型有效,但它有一些缺点。 一方面,为每个请求生成一个新进程可能会在系统上占用大量资源,尤其是在有许多同时请求的情况下。 为请求中的每个 PHP 请求生成一个新进程更加密集,因为操作系统必须为每个请求生成一个全新的解释器。

如何在 Nginx 和 Apache 之间进行选择

如您所见,这些 Web 服务器庞然大物之间没有明显的赢家。 这主要取决于您需要网络服务器来管理什么。 

在以下情况下选择 Apache: 

  • 您正在运行一个中/大型网站,该网站可能会随着时间的推移而显着增长,并且需要自定义模块。
  • 您在服务器中启用了许多虚拟主机或模块,并且在启动时需要它们。
  • 您正在运行一个小型网站,不想花时间学习如何正确配置 Nginx。

在以下情况下使用 Nginx:

  • 您正在运行一个大型网站,并希望同时轻松配置缓存和负载平衡,而不必担心硬件限制。

关于 Nginx 与 Apache 的最终想法

您是运行 Apache 还是 Nginx 取决于您的需求和您正在运行的硬件。 您可以使用任一选项为 PHP 网站提供服务。 但除此之外,还有很多事情需要考虑。 

如果您有一个简单的网站,您可能不会注意到它们之间的任何区别。 但是,如果您的网站获得更多流量并增长,您将需要了解每台服务器在负载下的性能和扩展情况。

另请阅读

关于Timothy Shim

Timothy Shim是一位作家,编辑和科技爱好者。从信息技术领域开始他的职业生涯,之后迅速地在印刷领域找到方向,并与国际,地区和国内媒体合作,包括ComputerWorld,PC.com,Business Today和The Asian. Banker。他的专长在于消费者和企业的技术领域。