Apache vs Nginx

  • 2019-11-17
  • 289
  • 0

Web服务器对于所有服务器通过Internet提供内容至关重要。市场上有很多Web服务器可用。两个主要的Web服务器是ApacheNginx。很多人在选择两者中的一个时感到困惑。在本文中,我将比较Apache和Nginx,它们将为您的困惑提供答案。这两个Web服务器不能互相替换。他们有其独特性。您必须根据要求选择任何Web服务器。在本文中,我们还将看到Nginx与Apache的区别。

在这里:我将比较Apache和Nginx与以下因素

连接处理体系结构
静态与动态内容
分布式与集中式配置
基于文件与URI的解释
模块
兼容性
两者一起使用。
阿帕奇
Apache最初是由Robert McCool创建的。创建于1995年。此后,Apache软件基金会从1999年开始开发Apache。实际的组织是HTTP Web服务器。但是,现在使用Apache的名称来指代该基金会。产品名称将覆盖组织名称。自发布以来,它就变得非常有名,此后Apache基金会就从文档和与软件的集成中受益。由于Apache的强大功能,兼容性和对许多平台的支持,Apache是​​许多服务器管理员的首选。通过加载动态模块,可以轻松扩展Apache。Apache处理许多解释语言,并且不为此使用任何其他外部软件。

Nginx的
Nginx的起源是一件有趣的事情。Nginx由Igor Sysoev创建。Nginx的创建是为了解决c10K问题。当时,很难为大量并发用户提供服务。甚至Apache都在努力处理流量。一次服务10,000个并发访问者是一个挑战。Igor Sysoev创建了Nginx作为对此的解决方案。创建它是为了使用有限的资源处理大量并发用户。Nginx表现出色,并以最少的资源管理大量并发用户。之后,它变得非常有名。处理大量并发访问者的服务器的管理员开始使用Nginx。Nginx即使在重负载下也表现良好。Nginx具有一些高级功能。它们是反向代理负载平衡许多人想知道apache和nginx服务器之间的区别。让我们在这里看到他们。
1)连接处理架构
让我们看看Apache和Nginx如何处理与客户端的连接。

Apache:
Apache提供了各种多处理模块来处理客户端请求。

管理员可以轻松地更改多处理模块(MPM)。

mpm_prefork:此模块为每个进程创建一个带有线程的进程。

每个线程处理一个请求。该模块的工作速度更快,直到请求数量超过进程数量为止。

该过程将消耗内存,从而使服务器速度变慢。

当过程较高时,按比例放大并不容易。

此模块最适合与其他不依赖线程创建的组件一起使用。

PHP不适合与线程一起使用。此mpm_prefork模块最好与PHP一起使用。

这是使用mod_php apache模块使用PHP的唯一安全方法。

mpm_worker:此模块创建具有多个线程的进程。

许多线程意味着要处理许多连接。该模块比Prefork模块效率更高。

这次新的客户端请求可以被线程捕获。因此,无需等待该过程变得免费。

MPM worker的扩展性优于Prefork Module。

mpm_event:此模块有点类似于mpm_worker。

在mpm_event中,只要存在连接,无论是否发出请求,连接都会保持活动状态。

mpm_event还处理Keep-Alive连接请求的线程。

它设置专用的保持活动连接线程,并将其余请求发送到其他线程。

这有助于进程防止充满活动连接请求。

Keepalive连接应稳定并通过特定线程固定。因此,专用线程是必须的。

您可以在Apache中看到请求处理算法的可用性。Ť

为不同的用途创建了变体。

Web管理员可以根据服务器功能选择模块。

但是,互联网在增长,因此并发性也在增长。

Nginx:
创建Nginx的目的是同时为更多请求提供服务,而不会以最少的资源进行任何中断。

Apache正在努力并发处理大量用户,这正是Nginx进入并表现良好的地方。

此后,它开始引起网站管理员的关注。

Nginx是具有大量访问者的服务器的首选。

Nginx最擅长提供静态内容,其运行速度几乎是Apache的两倍。

随着许多网站管理员开始使用Nginx来提高其性能,Nginx的增长速度更快。但是,与此同时,Apache Web服务器的使用率也降低了。

大多数时候,Apache Web服务器被Nginx服务器取代。

与Apache Web服务器相比,Nginx以完全不同的方式工作。

Nginx有一个主进程,建议每个CPU有一个主进程。

主进程创建多个工作进程。每个工作进程只有一个线程。

这就是Nginx与Apache不同的地方。

Nginx单个线程处理多个请求,而在Apache中,单个线程仅处理一个连接。

辅助进程连接与其他连接置于事件循环中,并且所有这些连接均异步提供。

完全满足请求后,该事件将从循环中删除。

由于单个线程可以处理多个连接,因此无需创建其他进程即可导致内存和CPU消耗。

因此,即使负载很重,Nginx也可以正常运行。

查看此论坛以查看Nginx与Apache 2017的比较。

2)静态与动态内容对比
静态内容投放:

在通过1000个并发连接进行测试时,Nginx在提供静态内容方面比Apache快2.5倍,在这场竞赛中处于领先地位。

在另一个与Nginx进行512个并发连接的测试中,它的性能比Apache快2倍,同时Nginx消耗的内存减少了4%。

因此,如果您要向大量并发用户提供静态内容,则应选择Nginx作为新的Web服务器。

当您选择Nginx与Apache WordPress时,它们两者的性能几乎相同

动态内容服务:

现在,大多数网站都基于动态内容运行。对于任何Web服务器来说,更快地提供动态内容都是至关重要的。

在测试动态内容期间,Nginx和Apache的性能均相同。

他们还消耗了相同的内存和CPU资源。

有很多使用CMS的网站,例如WordPress,Joomla和Drupal。

Web服务器还需要从中提供动态内容。

在这里,两个Web服务器都执行相同的任务,即将动态内容请求转发到php-fpm,等待其处理并响应请求,然后将内容提供给客户端。

当您选择Nginx与Apache php时,Apache直接与PHP一起使用,而Nginx使用php-fpm。

两个Web服务器都依赖第三方来处理请求。

在此之前,它们会提供静态内容,而无需等待过程完成。

因此,您可以选择任何Web服务器来提供动态内容,因为它们不会表现出任何性能差异。

3)操作系统
Apache:
Apache支持所有类似Linux和Unix的操作系统,并且可以完美地在它们上运行。

Apache还完全支持Microsoft Windows。

Nginx:
Nginx还高度支持Linux和类似Unix的操作系统。

但:

仅对Windows提供一些支持。但是,这不能停止运行Web服务器。(大多数托管服务器在Linux上运行)

4).Htaccess
Apache和Nginx之间的主要区别是目录级别的配置。

Apache:
在Apache Web服务器中,您可以使用指令来控制Web目录。这些指令将隐藏在名为.htacess的文件中。

== .htaccess文件功能强大,可让您直接控制Web服务器的某些方面,而无需访问Web服务器配置文件。

写入此文件中的指令非常有效,其结果可立即反映出来,而无需重新启动服务器。

处理.htaccess时必须小心。即使是很小的错误也会给您的网站带来麻烦。

Apache将始终在父目录中查找.htaccess文件。找到目录后,便会读取指令

这是您可以使用.htaccess进行控制的几件事。

URL重写,
访问限制,
授权
身份验证
缓存策略
它通过授予对CMS的访问权限来进行分散式配置。

这将帮助服务器管理员为共享托管中的网站管理员提供某些特定的访问权限。

因此,网站管理员可以控制自己的网站,并可以对其进行进一步的自定义。

Nginx:
Nginx不解释任何此类文件。Nginx不提供.htaccess之类的任何选项。

所有访问都是集中的,您必须在主配置文件中进行所有更改。

与Apache相比,Nginx似乎是一个背景,但它具有优势。

在Apache中,服务器将在相应目录中查找.htaccess目录,并且它将完全在父目录中搜索隐藏文件。

这是一个耗时的过程。找到之后。htaccess文件,服务器将解释指令并向用户获取目录内容。

如果还有更多的.htaccess文件,则应全部解释。

对于服务器的每个请求,此过程将一次又一次地发生。

但:

Nginx直接读取目录,并根据其主要配置指令将内容传递给用户。

这样可以节省大量时间并更快地交付内容。这是Nginx工作更快的原因之一。

另外,由于配置是集中的,因此安全性很高。

Web服务器拥有对配置的所有控制权。个别用户必须与管理员联系以进行任何更改。

它还可以防止用户使用.htaccess文件进行可疑活动。

5)工作模型
Apache:
您可以向Apache发出请求,该请求可以解释为文件系统上的物理资源。

该请求也可以以URI的形式发出。

Apache一直在使用目录块和位置块。文件块也代替目录块被使用。

位置块用于更多抽象资源。

Apache完全被创建为Web服务器。它将请求解释为文件系统资源。

为了获取文件,Apache从文档根目录开始搜索,并提供主机和端口号以及请求。

当搜索文件最终导致找不到文件时,Apache有很多选择。您可以使用别名指令来表示文件的备用位置。

如果要使用位置块而不是文件系统,则必须使用URI。

您可以使用可用的正则表达式灵活地配置文件系统。

Apache既可以充当基础文件系统,又可以充当网站空间。文件系统是Apache最依赖的文件系统。

.htaccess就是一个有关Apache文件系统依赖性的示例。

Nginx:
Nginx既可作为Web服务器又可作为代理。Nginx的体系结构与apache有很大的不同。因此,Nginx主要使用URI,并在需要时使用文件系统。

您可以看到Nginx配置文件的创建和解释方式。

Nginx不允许您指定目录的配置。相反,它直接解析URI本身。

Nginx使用两个主要块。它们是服务器块和位置块。

服务器块解释主机名,位置块解释主机和端口后面的URI。

该请求被解释为URI,而不是位置文件系统。

如果用户请求静态文件,则Nginx将选择服务器块和位置块。另外,Nginx将文档根附加URI。

该功能似乎相似。

但实际上并非如此。通过将请求解析为URI而不是文件系统,Nginx可以轻松地用作Web,电子邮件和代理服务器。

Nginx配置响应配置中提到的请求。

6)模块:
您可以使用该模块扩展Apache和Nginx。Apache和Nginx的函数样式彼此之间有很大不同。

Apache:
您可以根据需要使用该模块。轻松加载和卸载模块,以满足服务器的需求。

您可以轻松关闭和打开模块。每个模块提供不同的功能。

Apache很老,已经在互联网世界服务了很长时间。已经为Apache创建了许多库。

您可以使用安装任何模块来更改和添加Apache中的功能。

例如,mod_php将PHP解释器添加到Apache中的每个工作程序。

这些模块不仅提供动态内容。它们具有比您想象的更多的功能。这是其中的一些。

重写URL
验证客户端
的身份加固服务器
记录
缓存
压缩
代理
速率限制
加密
可以使用动态模块扩展核心功能。

Nginx:
Nginx还具有各种模块来支持用户需求。但是,Apache和Nginx模块之间存在主要区别。

Nginx模块不能动态加载。您必须自己将它们添加到核心软件中。

对于许多用户而言,使用所选软件包从核心构建服务器并非易事。

对于使用包含通常需要的模块的常规包装系统的人来说,要困难得多。

如果您有特定要求,则必须使用必需的模块从核心构建服务器。

可以指示Nginx模块执行特定任务,以便您可以获取所需的内容。许多用户也认为这是一种更安全的方法。

Nginx模块具有与Apache模块相同的许多功能。这是其中的一些。

代理支持
压缩
率限制
日志记录
重写
地理位置
认证
加密

邮件功能
8)支持,兼容性,生态系统和文档
如果您使用的是软件,则始终需要长期的支持和帮助。

这也是软件提供商的责任。

Apache:
Apache是​​一种流行的Web服务器,并且已经在市场上存在了很长时间。

它已经在互联网世界中服务了二十多年。

Apache的这种长期存在是其最大的优势。

作为Internet上第一个著名的供应商,Apache已被许多人广泛使用。

有很多可用的文档。

也可以使用第三方文档。许多Web软件工具可用于在Apache环境中进行引导。

Apache已经在市场上发展了很长时间,并且在市场上占有更多的份额,因此可以为Apache提供许多第三方支持。

熟悉Apache的服务器管理员。

由于其最佳功能.htaccess文件之一,它还用于共享主机中。

分布式配置环境使网站管理员可以访问他们的网站。

Nginx:
Nginx已经为互联网服务了十多年。Nginx在Web服务器市场上排名第三。

很多人一直在选择Nginx作为他们的Web服务器。

与近十年来Apache的增长相比,Nginx的增长是如此之快,而且非常高。

由于速度快,许多服务器管理员都采用Nginx。

最初,Nginx的详细文档不支持英语。

最初的文档使用俄语。

但:

一段时间后,对该项目的兴趣有所增加,文档已转换为英语。Nginx本身有很多管理资源来处理Nginx。

大量第三方也提供资源。这使得人们可以选择Nginx。

许多第三方应用程序为您提供了自动配置Nginx的选项。

如果您的服务器上没有Nginx,则他们会自动下载并配置Nginx,以使其应用程序在您的计算机上运行。

如果您需要为任何第三方应用程序安装Nginx,这对您来说将很容易。

这是因为它们提供了有关该应用程序需求的清晰文档。

创建自定义Nginx服务器使您的工作非常容易。

9)一起使用Apache和Nginx
您已经了解了Nginx和Apache的区别和局限性。现在,您应该确定哪种服务器最适合您。

当您查看Nginx与apache反向代理时,两者都为动态内容提供了最佳性能。

但:

您可以将它们一起使用,以从这两个Web服务器软件中受益。

您可以将Nginx用作Apache前面的反向代理。

Nginx的主要优点是并发性和交付静态内容的速度。

如果用户请求静态内容,则可以直接由Nginx提供。如果用户请求动态内容,则Nginx会将请求转发给Apache。

Apache处理该请求并将内容转发到Nginx。然后Nginx将内容转发给用户。

对于许多人来说,这是一个建议且运作良好的设置。Nginx和Apache共同分担工作量。

首先Nginx收到请求。如果它具有处理请求的能力,它将响应该请求。

如果Nginx没有处理请求的能力,那么它将被转发到Apache。

通过使Nginx处理请求的一部分,您将避免Apache服务器线程被占用的情况,并且无法响应请求。

最大的好处是您可以在此设置中添加更多的后端服务器。Nginx具有处理许多服务器的能力,甚至可以平衡它们之间的负载。

如果需要,它可以帮助您扩大规模。

结束语
您已经看到了Nginx和Apache之间的上述比较。您需要提醒的一件事是:“没有什么可以完全满足您的要求”。

您必须根据您的主要和重要需求选择Web服务器。

除特别标注,本站均为原创,请注明:https://www.zhangdaming.cn/apache-vs-nginx.html

感谢打赏!
微信
支付宝

评论

还没有任何评论,你来说两句吧

发表评论