Nginx 与 Apache:哪个是最好的 Web 服务器?

谷歌seo

尽管有许多不同类型的服务器软件,但您通常会将竞争者归结为Nginx与Apache。这是因为两者都为许多不同的服务器配置提供了最佳性能,并且比另一个更适合某些应用程序。

即便如此,您仍然需要考虑其中哪一个更适合您的需求。有几个不同的类别需要研究,例如操作系统(OS)支持、安全性、文档和(当然)性能。

在这篇文章中,我们将在许多不同的领域比较Nginx与Apache。最后,我们将总结我们的发现,并为您提供选择正确选项所需的信息。

介绍Nginx和Apache

在我们深入了解每种服务器类型的详细信息之前,让我们先简要介绍一下Nginx和Apache。一旦我们进入下一部分,您将了解两者的一些用例,以及您可能在何处看到它们“在野外”。

#Nginx与#Apache:哪一个是适合您的Web服务器??‍?

点击推文

 

nginx

与Apache相比,Nginx(发音为“engineX”)是服务器端技术领域的新手。然而,开发团队承担了扩展Apache系统局限性的任务。

这是一个开源解决方案,许多用户考虑其稳定性和可扩展性。这(部分)归结于它的事件驱动架构——稍后会详细介绍。事实上,最初的Nginx版本的部分目标是能够同时处理10,000个连接。由于当时的网络迅速扩展,这在2004年是必要的。

总体而言,系统管理员和站点所有者喜欢Nginx,因为它具有高性能、适用于静态文件并执行负载均衡器和“反向代理”的功能。这些都与正常运行时间、速度和安全性相关。

阿帕奇

Apache在某种程度上是Web服务器技术的“老人”。它几乎与Web本身一样古老——从1995年起,Apache就一直是数千(如果不是数百万)服务器的核心软件。

长期以来,Apache一直是“系统管理员”中的主导技术。造成这种情况的原因有很多——一些与性能有关,另一些则是习惯的力量。无论如何,Apache服务器在配置很重要的地方有很多用途。

您会发现Apache作为所有Linux发行版上的预装软件,因此它是该操作系统的首选解决方案。然而,虽然它使用与Nginx不同的架构,但它仍然提供强大的功能、可扩展性和出色的文档。

许多系统管理员也喜欢Apache的可定制特性,以及如何通过加载各种模块来制作自己的服务器。

Nginx与Apache的一般用例

可以说Apache在服务网站方面是“万事通”。然而,这是喜忧参半。是的,Apache服务器几乎可以做Nginx可以做的所有事情,但代价是代码性能较低。年龄是这里的一个因素。

由于Apache在我们拥有一些更高级的Web服务器应用程序之前出现,因此代码库无法满足现代网站的需求。虽然这些问题现在不一定值得关注,但Nginx之类的解决方案适用于现代网络。

因此,您会发现Apache作为一种易于配置的服务器,适用于共享托管等应用程序,非常棒。它的集成还将其用作本地开发服务器软件,作为Linux、Apache、MySQL和PHP(LAMP)堆栈的一部分。

相比之下,Nginx拥有更成熟的软件基础,​​相比Apache,其精简程度更高。在稳定性和安全性是关键、基本要素的地方很好。您会发现Nginx服务器不像其他类型那样可配置,这意味着您将更少地访问它的核心。

更重要的是,它不像Apache那样是模块化的,这使得它不太适合需要进行服务器定制的情况。

Nginx与Apache:每种服务器类型的流行程度

很长一段时间,服务器软件就像一场单马比赛。Apache作为主导力量运行了多年,并且仍然占有巨大的市场份额。因此,您会发现有很多对Apache服务器的集成和支持,以及一流的文档。

这是选择Apache的进一步理由,并有助于其继续使用。然而,Nginx是一个拥有巨大市场份额的服务器软件。随着时间的推移,Nginx的使用率在缓慢上升,以至于它现在是市场上最主要的Web服务器技术,尽管不是很多。

展望未来,我们建议Apache的使用会随着时间的推移而减少,因为Nginx提供了很多系统管理员在Web服务器中需要的东西。然而,LiteSpeedWebServer和CloudflareServer即将出现,并且拥有不断增长的用户群和强大的支持。几年后,这种比较可以将Nginx与这些年轻的新贵之一进行比较。

Nginx与Apache:特性和功能的技术分解

接下来的几节将涵盖Nginx与Apache的许多技术方面。虽然我们无法涵盖所有​​内容,但我们会给主要领域留出充足的时间。无论如何,因为这些代表了两种服务器类型的核心元素,所以在为您选择合适的软件时,您将有足够的工作要做。

1.连接和请求处理

了解服务器如何处理连接至关重要,因为这是它的“核心货币”。这是有争议的,但是当人们希望讨论Nginx与Apache的相对优点时,连接处理在看法中起着重要作用。

nginx

Nginx是“异步的”和“事件驱动的”,这意味着它可以一次处理多个请求,并在有可用资源的情况下处理它们。它产生“工作进程”来处理传入的连接,它预计一次有数千个。这些是服务器其余部分的“水载体”。

例如,每个工作进程都会监听进程事件和连接,并将它们添加到一个连续循环中。从那里,服务器可以处理每个事件并在完成时将其删除。Nginx服务器的流提供了固有的可扩展性,异步、非阻塞架构也提供了这一点。

阿帕奇

相比之下,Apache通过多个多处理模块(MPM)一次处理一个事件。系统管理员将选择最适合该任务的连接架构,其中有几个。

mpm_prefork模块是一个常见的模块。这会为每个事件产生子进程,并且一次只处理一个连接。如果进程数高于请求数,您将很难区分Nginx与Apache在性能方面的区别。

但是,这种情况很少见,Apache服务器在很多情况下会看到比进程更多的请求。更重要的是,由于内存使用,这个MPM不能很好地扩展。

对于那些使用PHP的人来说,mpm_prefork是使用mod_php解释器模块的唯一安全方式。尽管有这些缺点,但这将是WordPress开发人员在必须部署到Apache服务器时会选择的MPM。

您还将看到mpm_worker和mpm_event模块。由于它们可以为每个线程集合生成多个进程,因此它们执行类似的操作并更好地扩展。

这批MPM展示了Apache的灵活性,尽管在某些情况下性能存在缺陷。

静态和动态内容的请求处理

在我们继续之前,我们应该提到每个服务器软件的静态和动态内容。您将了解到Nginx无法处理动态内容,这可能会让您感到担忧。事实上,Nginx不会以原生方式处理此类内容。相反,它会将其发送到外部处理器(例如缓存),然后在移动内容之前等待它返回。

对于开发,系统管理员将为此设置一个解决方案,例如Memcached。这种方法有负面影响,即性能。然而,链的每个部分的性能开销的好处否定了这一点。Nginx不必担心处理这些请求,因此它可以更高效地专注于其职责范围。

Apache的MPM系统允许它在不需要其他模块的情况下处理静态和动态内容。对于动态内容,Apache将语言处理器嵌入到每个工作线程中。这是一种很有效的简单方法。如果需要进行更改,您还可以更换模块。

2.配置服务器

Nginx与Apache之间更明显的区别之一是您如何配置每个服务器。Nginx使用集中式方法,这意味着用户无法在一个主文件之外配置服务器。虽然这似乎是负面的,但它有很多优点:

  • 服务器管理员负责全局安全,从整体上加强对服务器的访问。
  • 集中式服务器比其他类型的服务器具有更高的性能。这是因为Nginx不需要处理检查每个目录中的配置文件的请求。
  • 这里有一个连锁反应,因为不会有来自多个区域的服务器的任何覆盖,进一步减少请求时间。

外行知道他们使用Apache服务器的一种方式是.htaccess文件的存在。这些是您几乎可以在服务器上的任何位置添加的配置文件。Apache将在发出请求时检查.htaccess文件路径的每个元素。

这对于想要个性化他们的服务器部分但如果其中一个指令导致性能或安全问题可能会导致灾难的用户来说非常棒。这种分散的方法是您将看到Apache用于共享主机的原因之一。这也是WordPress等内容管理系统(CMS)在Apache服务器上提供良好性能的原因。

3.请求解释

Nginx与Apache的一个主要区别似乎并不明显的是它如何解释请求。简而言之:

  • Nginx使用统一资源标识符(URI)为每个组件解释和映射请求。
  • Apache也可以使用URI来解释请求,但更常见的是看到基于文件的路径结构。

因为Apache首先是一个Web服务器,它将使用<Directory>、<Files>或<Location>块来定义资源。这里的关键概念是Apache“看到”的一切都与Web服务器相关,因此资源路径中没有歧义。想想文档树,这就是Apache‘可视化’服务器文件系统的方式。

相比之下,Nginx有很多用例,例如负载均衡器、代理服务器和Web服务器。因此,请求需要作为Nginx的URI来处理它们。例如,Nginx使用服务器和位置块:前者解释请求的主机,后者随后匹配URI部分。整个请求变成了一个URI。

总的来说,URI对Nginx来说更灵活,因为它可以适应它执行的任何功能。即便如此,Apache的系统还是可以工作的,因为它只需要扮演Web服务器的角色。

NginxvsApache:2021年你应该为你的服务器选择哪一个

我应该选择哪种服务器软件?很简单:这是您的托管服务提供商提供的任何一种。在很多情况下,您将没有选择。我们注意到,如果您想在Nginx与Apache之间做出决定,许多Web主机都遵循您应该匹配的相同模式:

  • 如果您想运行需要持续配置的服务器,或者您想为用户提供配置选择,Apache将满足您的需求。
  • 但是,如果您想提供超强的性能、坚如磐石的安全性,并且想要处理配置而不是您的用户,那么Nginx是前进的方向。

在性能方面,Apache由于其固有的架构可以占用更多内存。Nginx在高流量情况下会更好,尤其是当它必须处理大量静态内容时。

因此,如果您依靠缓存来存储和提供内容,Nginx可能是最佳选择。但是,请记住,Nginx无法提供动态内容,因此根据服务器使用的代理的效率,您将承受更多的性能损失。

结论

WordPress(以及运行网站)的许多领域提供了几乎压倒性的选择。这就是野兽的本性。但是,当您需要让您的网站快速上线时,它无济于事。

您选择的服务器类型是一项至关重要的一线决定,您需要格外小心。Nginx与Apache是一个常见的比较,因为两者在某些情况下都有好处。

我们的观点是Nginx可以以更高的性能覆盖最多的基础,这使其成为大多数WordPress用户的更好选择。这就是为什么许多流行的以性能为中心的WordPress主机已经转向全Nginx服务器堆栈,包括Kinsta和Flywheel。

无论如何,如果您没有选择,您可以安全地使用主机提供的任何内容,并且大多数WordPress站点都可以使用任一Web服务器完全正常。

Nginx与Apache之间的界限在哪里?在下面的评论部分让我们知道!

内容来源网络,如有侵权,联系删除,本文地址:https://www.230890.com/zhan/164846.html

(0)

相关推荐