Apache与NGINX的3个主要差异和优缺点

发布时间:2021-11-01 17:41:20

Web 服务器是 Internet 的核心。如果没有Apache和 NGINX等网络服务器软件,网络将不会像我们今天看到的那样。但是,它们不可互换。要知道这两个选项中的哪一个(Apache 与 NGINX)最适合您,您需要了解它们的工作原理。

服务器软件.png

什么是 Web 服务器?

简而言之,Web 服务器是专门用于运行 Apache 或 NGINX 等服务器软件的计算机。Web 服务器既存储站点文件,又可以处理传入请求以访问它们。

负责最后一项任务的是 Web 服务器软件,这是一项重要的职责。对于流行的网站,您使用的软件可能需要在很短的时间内处理大量请求,因此它必须能够胜任这项任务。NGINX 和 Apache 都能够扩展和处理大量请求。但是,两个服务器选项的工作方式在核心级别上是不同的。

Web 服务器软件与其他几个组件一起工作,为现代网站和应用程序提供服务。例如,要在服务器上设置 WordPress,您需要以下组件:

支持 HTTPS 的 Web 服务器:这可以是 Apache、NGINX 或其他一些选项。

PHP:WordPress 建立在PHP 语言之上,因此您需要它来运行内容管理系统 (CMS)。

数据库软件:可以是 MySQL 或 MariaDB。

在本文中,我们将只关注 Web 服务器软件。但是,重要的是要了解软件不是凭空运行的。在某些情况下,你甚至可以配置Web服务器,如Apache和NGINX工作在一起。网站可以做到这一点的一种方法是配置 NGINX作为反向代理,同时使用 Apache 作为主要服务器软件。您可以使用的应用程序显然多种多样且丰富。

Apache 简介

Apache.png

长期以来,Apache是大多数站点的默认 Web 服务器选项。该软件自 1995 年 Robert McCool 推出 Apache HTTP Server 以来一直存在。几年后,Apache 软件基金会接管了维护工作,Apache 成为开源软件。

Apache 获得了极大的欢迎,因为它与几个主要的 Linux 发行版一起安装。当谈到 Web 服务器时,Linux 的流行使 Apache多年来成为事实上的选择。

Apache 名称在 Linux 中根深蒂固,以至于操作系统 (OS) 将httpd命令用于其服务器进程(在 Apache 本身中可以找到)。然而,当谈到 Web 服务器时,Apache 并不是唯一的大牌。

NGINX 简介

NGINX.png

NGINX由 Igor Sysoev 设计,能够处理所谓的“C10K 问题”。这涉及优化网络以能够处理多达 10K 的并发连接。换句话说,NGINX 在创建时考虑到了最大的可扩展性。

该开源软件于 2004 年发布,现在有两种可用的许可证类型。您拥有开源版本和NGINX Plus,这是一个包含专业支持和其他功能的企业解决方案。

在早期,大多数网站使用 NGINX 仅处理静态请求,因为它与 Apache 相比存在安装难度。不过,NGINX 的市场份额多年来一直在稳步增长。

根据一些调查,NGINX 已经超过 Apache,成为世界上最受欢迎的 Web 服务器软件。其他数字紧跟 Apache 的步伐:

事实是,在网络上最受欢迎的网站中,NGINX 比 Apache 更受欢迎。这是因为 NGINX 在可扩展性方面具有不可否认的优势,这对于获得大量流量的站点来说至关重要。

此外,如果您不想将其用作 Web 服务器,NGINX 可以将“双重任务”用作反向代理或负载均衡器。换句话说,它可以完成比 Apache 多得多的角色。

但是,这并不是说如果您正在考虑更改服务器,NGINX 应该是您的默认选择。在接下来的几节中,我们将分解每个软件的独特之处。

Apache 与 NGINX:3 个主要差异

在我们讨论哪种服务器解决方案最适合您之前,我们需要分解它们的不同之处。让我们首先讨论有关 Apache 与 NGINX 的请求处理。

1. 请求管理

请注意 - 这是事情变得更加技术化的地方。Apache 使用它所谓的多处理模块 (MPM)来处理连接。该软件使您可以在三种类型的 MPM 之间进行选择:

mpm-prefork:该模块创建单线程进程来处理每个请求。反过来,每个“孩子”只能处理一个连接。

mpm_worker:该模块可以启动多线程进程,每个线程能够管理一个连接。

mpm_event:在大多数情况下,此模块的工作方式与mpm_worker相同,但经过优化以保持连接有效。

Apache 的一个独特方面是它使您能够选择要使用的模块,并根据需要交换它们。默认情况下,Apache 使用mpm-prefork模块,该模块非常适合并发连接数较少的情况。该mpm_worker模块是更好的时候,去洗牙,但它需要更多的服务器资源。

相比之下,NGINX 使用它所谓的“事件驱动”方法。该软件使用多线程进程,每个线程能够处理多个连接。

更重要的是,NGINX 异步处理传入的请求。简而言之,这意味着 NGINX 可以用更少的服务器资源管理更多的请求,从而使其在这方面的效率更高。

2. 服务器配置

Apache 使用.htaccess文件来设置它如何处理传入请求的特定规则。这些文件包括从重定向规则到内存限制等所有内容。

使用 Apache,您可以为服务器树中的每个目录设置单独的.htaccess文件。举个例子,如果你设置了一个共享服务器,你可以让每个托管在它上面的网站设置自己的.htaccess文件。

这种高度灵活性的缺点是,您在请求路径中遇到的每个.htaccess文件都需要单独解释。这意味着请求可能需要更长的时间来执行。

在配置方面,NGINX 没有为您提供相同级别的灵活性。您拥有一个管理整个事物的主文件,而不是直接级别的配置文件。

3. 模块

模块是附加组件,您可以将它们与您选择的服务器软件一起使用以扩展其默认功能。考虑到 Apache 的年龄和流行度,在模块选择方面它比 NGINX 具有优势也就不足为奇了。

Apache 不仅提供更多模块,而且更容易找到有关如何使用它们的文档和教程。此外,Apache 允许您随意安装、启用和禁用模块,为您提供高度的灵活性。

NGINX 没有提供同样的优势。要使用模块,您需要将它们编译成 NGINX 核心。此外,一旦模块被编译,你就不能禁用它们,这使得交换选项变得更加困难。

需要注意的是,NGINX Plus 确实包含一个动态模块功能,使您可以随意禁用和启用模块。但是,即使使用 Plus,您仍然需要使用 NGINX 核心编译这些模块,然后才能使用它们。

尽管 NGINX 的模块库和文档在稳步增长,但在数量上仍然无法与 Apache 匹敌。不过,考虑到 NGINX 如何不断获得更多市场份额,这可能会在不久的将来发生变化。

Apache 与 NGINX 的优缺点

到目前为止,您已经了解了 Apache 和 NGINX 之间的核心区别。现在让我们简要介绍每种软件的优缺点。

阿帕奇

首先,让我们谈谈使用 Apache 的主要好处:

设置和配置更容易

借助 .htaccess文件,您可以更精细地控制服务器的配置

模块选择更好,可以随意启用和禁用模块

您可以决定如何使用不同的模块处理请求

使用 Apache 与 NGINX 的主要缺点是后者的扩展性更好。如果您的网站仍处于成长阶段,Apache 应该足以处理流量。

但是,在某些时候,如果您的站点变得非常成功,您可能需要考虑更新您的服务器堆栈。这可能意味着切换到 NGINX 或将其用作 Apache Web 服务器的反向代理。

NGINX

NGINX 在 Apache 方面有两个明显的优势——性能和可扩展性。更具体地说,NGINX 在以下方面更好:

处理大量并发请求

用更少的硬件资源获得更好的性能

更快地提供静态内容

最后一部分就是为什么这么多人选择使用 NGINX 作为反向代理解决方案的原因。尽管有所有与性能相关的好处,但 NGINX 并非没有缺陷。

尽管只有一个配置文件可以减少请求时间,但这也意味着 NGINX 不如 Apache 灵活。这也适用于模块,因为 NGINX 的开源版本强制您编译模块才能使用它们——而且您不能禁用它们。在实践中,这意味着设置 NGINX 以根据需要工作可能比使用 Apache 复杂得多。

使用 NGINX 的主要原因是性能是您的主要关注点。在某些时候,流行的网站需要拔出大枪来处理大量流量,而不会出现停机、加载时间长等情况。此外,由于 NGINX 可以让您以更少的硬件资源获得更好的性能结果,因此它可以成为更具成本效益的选择。

结论

切换服务器或服务器软件始终是一个重大决定。因此,理想情况下,您希望使用将长期坚持使用的服务器解决方案。

在Apache与NGINX之间进行选择并不像看起来那么明确。在许多情况下,决定权不会由您决定,因为您的网络主机将决定使用什么软件。在实践层面上,您需要进行研究并找出网络主机在承诺之前使用的选项。

声明:本站发布的内容以原创、转载、分享网络内容为主,如有侵权,请联系电话:400-887-2127,邮箱:7221960@qq.com ,我们将会在第一时间删除。文章观点不代表本站立场,如需处理请联系我们。