Web服务器是Internet的核心。 没有网络服务器软件如 阿帕奇 和NGINX,网络将不像我们今天看到的那样。 但是,它们不可互换。 要了解这两种选择中的哪一种(Apache vs NGINX)最适合您,您需要了解它们的工作方式。
在本文中,我们将讨论什么是Web服务器以及它们如何工作,并介绍Apache和NGINX。 然后,我们将在关键差异方面比较Apache与NGINX,并讨论它们的优缺点。
让我们开始吧!
什么是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简介
需很长时间, 阿帕奇 是大多数网站的默认Web服务器选项。 自1995年Robert McCool推出Apache HTTP Server以来,该软件就已经存在。 几年后,Apache Software Foundation接管了维护工作,Apache成为开源软件。
Apache受到了广泛的欢迎,因为它与几个主要的Linux发行版一起安装。 当谈到Web服务器时,Linux的盛行使Apache成为事实上的多年选择。
Apache名称在Linux中根深蒂固,以至于操作系统(OS)将httpd命令用于其服务器进程(在Apache本身中找到的东西)。 但是,就网络服务器而言,Apache并不是唯一的大牌。
NGINX简介
NGINX 由Igor Sysoev设计,能够处理所谓的 “ C10K问题”。 这涉及优化网络以能够处理多达1万个并发连接。 换句话说,NGINX的创建考虑了最大的可扩展性。
该开源软件于2004年发布,现在有两种许可证类型可用。 您拥有开源版本,并且 NGINX Plus,这是一个包含专业支持和其他功能的企业解决方案。
刚起步时,由于与Apache相比安装困难,因此大多数网站都使用NGINX仅处理静态请求。 多年来,NGINX的市场份额一直稳定增长。
根据一些调查, NGINX已通过Apache 作为世界上最受欢迎的Web服务器软件。 其他数字使Apache紧随其后:
确实,NGINX在网络上最受欢迎的网站中比Apache受欢迎得多。 这是因为NGINX在可伸缩性方面具有不可否认的优势,这对于获得大量流量的站点而言至关重要。
另外,NGINX可以拉“双重责任” 作为反向代理 要么 负载均衡器,如果您不想将其用作网络服务器。 换句话说,它可以完成比Apache更多的角色。
但是,这并不是说如果要考虑更改服务器,NGINX应该是您的默认选择。 在接下来的几节中,我们将分解使每种软件独特的原因。
Apache vs 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 vs NGINX的优缺点
到目前为止,您已经了解了Apache和NGINX之间的核心区别。 现在,让我们简要介绍每种软件的优缺点。
阿帕奇
首先,让我们谈谈使用Apache的主要好处:
- 设置和配置更加容易
- 借助.htaccess文件,您可以更精细地控制服务器的配置
- 模块选择更好,您可以随意启用和禁用模块
- 您可以决定如何使用不同的模块处理请求
使用Apache vs NGINX的主要缺点是后者的扩展性更好。 如果您仍处于网站的成长阶段,那么Apache应该足以应付流量。
但是,如果您的站点取得了巨大成功,则有时可能需要考虑更新服务器堆栈。 这可能意味着切换到NGINX或将其用作Apache Web服务器的反向代理。
NGINX
就Apache而言,NGINX具有两个明显的优势-性能和可伸缩性。 更具体地说,NGINX在以下方面更好:
- 处理大量并发请求
- 用更少的硬件资源获得更好的性能
- 更快地提供静态内容
最后一部分是为什么这么多人选择使用NGINX作为反向代理解决方案的原因。 尽管NGINX具有与性能相关的所有优点,但它并非没有缺陷。
尽管只有一个配置文件可以减少请求时间,但这也意味着NGINX的灵活性不如Apache。 这也适用于模块,因为NGINX的开源版本会迫使您编译模块以使用它们-并且您不能禁用它们。 实际上,这意味着要设置NGINX以使其按需工作可能比使用Apache复杂得多。
使用NGINX的主要原因是性能是否是您最关心的问题。 在某些时候,流行的网站需要掏出大笔钱来处理大量流量,而不会造成停机时间,加载时间长等问题。 而且,由于NGINX可以使您以较少的硬件资源获得更好的性能结果,因此它可以是一种更具成本效益的选择。
结论
切换服务器或服务器软件始终是一个重大决定。 因此,理想情况下,您将希望长期使用将要坚持使用的服务器解决方案。
在之间选择 阿帕奇 与 NGINX 看起来不那么清晰。 在许多情况下,此决定将取决于您,因为 您的虚拟主机 将决定使用什么软件。 在实际的水平上,您需要进行研究,并找出Web主机使用的选项,然后再提交给他们。
您对如何在Apache和NGINX之间进行选择有任何疑问吗? 让我们在下面的评论部分中讨论它们!
ProStockStudio / shutterstock.com的文章缩略图