技术频道导航
HTML/CSS
.NET技术
IIS技术
PHP技术
Js/JQuery
Photoshop
Fireworks
服务器技术
操作系统
网站运营

赞助商

分类目录

赞助商

最新文章

搜索

选 Nginx 还是 Apache - 5大因素助你决定

作者:admin    时间:2022-3-22 11:27:49    浏览:

Nginx 和 Apache 是 Internet 上最常用的两个 Web 服务器。他们共同拥有超过 60% 的总市场份额。

但是你应该使用哪一个?这正是本文的目的。

本文将通过5大因素多方面比较,帮助你选择。此外,前面一文的介绍可能对你的选择也有帮助:

 选 Nginx 还是 Apache - 5大因素助你决定

性能表现(Performance)

在选择像 Web 服务器这样的关键软件时,你应该首先考虑的是它的性能特征。

不仅是它们每秒可以服务多少个请求,还包括它们在重负载下的表现以及资源使用情况(RAM、CPU)是什么样的。

这是我们的测试设置:

  • Ubuntu 18.04
  • Apache 2.4.29 (mpm_event)
  • Nginx 1.14.0
  • 默认设置
  • 1GB 内存
  • 1 个 CPU

作为基准测试工具,我们将使用具有以下设置:

  • -d 60(测试持续时间)
  • -c 40(并发)
  • --latency(延迟分布)

我们的目标 URL 返回一个不涉及服务器语言的小型 HTML 文件。

运行这个测试,我们得到以下结果(请求/秒):

Apache    Nginx
670.53     660.15

似乎 Nginx 和 Apache 的速度差不多!

但是资源使用情况呢?

运行此测试时,Apache 平均 CPU 使用率为 20% 和 18MB RAM:

 Apache 平均 CPU 使用率
Apache 平均 CPU 使用率

Nginx CPU 使用率平均为 12%,只有 8MB RAM:

Nginx CPU 使用率 
Nginx CPU 使用率

虽然此基准测试可能无法代表所有实际用例,并且你应该考虑为你的特定设置运行自己的基准测试,但它可以让你大致了解这些服务器的性能。

另外,Nginx wiki上有一篇文章比较了性能影响。

性能影响 Nginx 与 Apache
性能影响 Nginx 与 Apache

总之,如果你最关心的是性能和资源的有效利用,你应该考虑使用 Nginx。

可扩展性(Extensibility)

两台服务器都具有一套很好的核心功能,对于大多数人来说应该足够了。

但有时你需要一点额外的东西。

这就是你可以使用 modules 扩展两个服务器的原因。

模块可以编译到主服务器二进制文件中,也可以作为动态模块添加,可以与二进制文件分开安装。

动态模块更灵活,因为它们可以自行更新,你可以添加新模块而无需重新编译服务器。

大多数 Apache 模块都是动态的,但 Nginx 最近(版本 1.9.11,2016 年发布)开始支持此功能。

现在,让我们看一下两个服务器的一些有用模块。

  • modsecurity:可用于 Apache。该模块在您的应用程序前面添加了一个 Web 应用程序防火墙 (WAF)。有一个 Nginx 版本,但是好像没有维护,可以用Naxsi代替。
  • page_speed:适用于 Apache 和 Nginx。该模块可以动态优化图像并添加其他优化以改善页面加载时间。
  • ngx_mruby / mod_ruby:可用于 Apache 和 Nginx。该模块允许你使用 Ruby 编程语言来处理请求并做出决定以重定向到另一个页面、返回一些文件内容等。nginx 版本维护良好且速度更快。

两种服务器都可以使用许多流行的模块,因此在决定使用哪种服务器时,模块可用性可能不是一个因素。

安装新模块:

向 Apache 添加新模块比向 Nginx 添加新模块更容易。

你可以从包存储库安装 Apache 模块,然后使用a2enmod命令启用它并重新启动服务器。

Nginx 可能需要你从源代码编译以安装某些模块,因为动态模块必须针对你正在运行的 Nginx 的相同版本构建。

但是,你可以在非生产服务器上执行此操作,然后将动态模块(.so 文件)复制到生产中。

如果你认为你需要经常更改模块,则需要考虑这一点,但情况并非如此。

人气(Popularity)

一款开源软件的受欢迎程度很重要,因为最受欢迎的软件通常会得到最多的关注。这可以转化为更好的文档,找到特定问题的解决方案的能力以及软件本身的维护程度。

那么 Apache 和 Nginx 到底有多受欢迎?

根据 w3techs 的数据,Nginx 的市场份额一直在稳步增长,而Apache的市场份额却在逐步下降。在2019年,Nginx的市场份额开始超过Apache。

网络服务器使用 
网络服务器使用

 这些数据与全球整体 Web 服务器有关,但如果我们对排名前 100 万的网站进行抽样,Nginx 已经存在一段时间了:

 使用 Nginx 的网站百分比
使用 Nginx 的网站百分比

谷歌搜索趋势似乎也反映了这一事实:

 Google 搜索趋势:Nginx 与 Apache
Google 搜索趋势:Nginx 与 Apache

Netcraft 调查显示,Apache 在 2019 年 4 月已被 Nginx 超越。

最常见的用途

让我们看一下 Apache 和 Nginx 最常见的用途,这将帮助你确定你的用例是否与服务器自然最擅长的用途相匹配。

Apache 的优势:

  • 在没有外部软件的情况下运行 PHP 应用程序(如 Wordpress),mod_php如果它还不是你的发行版的默认安装的一部分,则只需安装它。
  • 在共享环境(如托管服务提供商)中效果很好,因为它支持基于目录的.htaccess文件配置。

Nginx 的优势:

  • 由于其事件驱动的方法来处理请求,因此非常有效地服务静态资产。
  • 出于同样的原因,它是一个很棒的代理和缓存层。
  • 你可以使用ngx_lua&等模块轻松实现自定义逻辑ngx_mruby。Cloudflare在其自定义 WAF(Web 应用程序防火墙)中充分利用了这一点。

最后的考虑

在做出最终决定之前还需要考虑一些事项:

  • Nginx 以 Nginx PLUS 的形式提供企业级解决方案。这增加了专业支持和一些额外的功能(如监控),如果你正在运行大型操作,这可能对你很重要。
  • Apache 和 Nginx 可以一起使用,Nginx 将非静态资产请求代理到 Apache。这可能会显着增加你的设置复杂性,但如果你想同时使用两者的功能,则需要考虑这一点。

我们希望对你有用。

相关文章

标签: nginx  apache  
x
  • 站长推荐
/* 左侧显示文章内容目录 */