Nginx 与 Apache:哪个是最适合您的 Web 服务器?
已发表: 2022-03-30Apache 和 Nginx,我们称之为“engine-x”,是网络托管业务的两个主要参与者。 它们占所有网络流量的近一半。 它们是最流行和广泛使用的开源 Web 服务器。
他们的共同目标是管理各种工作负载并满足 Windows 和 UNIX 等现代操作系统的要求。
Apache是一家知名的Web服务器公司,但Nginx管理的网站太多了,根本停不下来。 虽然这两个 Web 服务器都无法更换,但它们各有优缺点。
Apache 与 Nginx 的总结
Apache 和 Nginx 都是开源 Web 服务器,可以处理各种工作负载,以满足现代 Web 需求。 它们在概念上相似; 他们也是网络服务器行业的紧密竞争对手。
20 多年来,Apache 一直是网络服务器生态系统的领导者。 Nginx 有它的优势,但它仍然是一个受欢迎的选择。 Nginx 是网络应用程序和网站的未来。
什么是阿帕奇?
Apache HTTP Server,也称为“Apache”,是一款高性能、快速的开源 Web 服务器软件。 它是由 Apache 软件基金会赞助的开发人员开发的。
它是一个协作网络服务器项目,旨在按照当前的 HTTP 标准构建一个安全、健壮和商业级的网络服务器。
该项目是来自世界各地的一群志愿者的共同努力,旨在通过互联网创建 HTTP Web 服务器和随附的文档。 自 1995 年以来,Apache 一直是 Web 服务器市场的领导者。 2009年,它达到了1亿个网站。
Apache 仍然是服务器管理员的首选,因为它具有强大的兼容性、多平台支持和易用性。 Apache 可以与 Linux 或Windows一起使用。 由于其简单性和灵活性,Apache 成为管理员最喜欢的选择。
人们很早就渴望发明和尝试新技术。 Apache 是万维网的支柱。 而已。 古语说,当你在顶部时,唯一的下坡路就是向上。
什么是 Nginx?
一个人的损失就是另一个人的收获。 这正是发生的事情。 Nginx 作为 Apache 的潜在竞争对手,已经侵蚀了 Apache 的强大地位。 作为获得全球认可的早期竞争者之一,Nginx 是一个可靠的 Web 服务器平台,可以处理现代 Web 需求。
简单来说,俄罗斯开发者 Nginx 是一个开源、免费的 HTTP 服务器,可以方便地用作邮件代理、通用 TCP/UDP 代理或反向代理。 它旨在有效地为资源有限的大量并发用户提供服务。 Nginx 诞生于难以处理大量网络流量的时代。
尽管 Nginx 在许多方面都无法与 Apache 竞争,但 Nginx 的异步状态使其成为比 Apache 更具吸引力的选择。
它还具有单线程架构,因此是比 Apache 更明智的选择。 管理员喜欢 Nginx 的轻量级架构、资源效率和高并发。 它也可以用作独立的 HTTP 服务器来增强 Web 服务器的架构。
它以最少的硬件资源高效、快速地服务静态流量的能力是无与伦比的。 Nginx 还可以充当减震器,以保护 Apache 服务器免受流量突然激增和其他安全漏洞的影响。
Nginx 提供了所有基本的 HTTP 服务器功能,而不会牺牲其使用有限硬件资源处理多个请求的能力。
NGINX 和 Apache 的详细比较
简单
Apache 使应用程序开发更容易。 很容易将模块添加到 Web 服务逻辑的任何部分,因为它使用每个进程模型的连接。 如果一个进程失败,所有其他操作都不会受到影响。
与 Apache 不同,Nginx 具有复杂的架构,这使得应用程序开发相当困难。
这当然需要深入了解如何创建没有错误的高效代码,以实现与事件驱动架构的适当交互。
处理连接
Apache Web Server 和 Nginx 之间的主要区别之一是它们处理连接和流量的能力。
Apache 的开发团队非常清楚与处理多个连接相关的问题。
创建了一个快速循环函数来连续搜索和处理事件。 一旦事件被激活,每个工作人员都可以建立连接。
在资源有限的情况下,这种类型的连接处理允许 Nginx扩展得更高。 即使在重负载下,CPU 和内存利用率也保持相对稳定。
可以在以下模块之一(也称为多处理模块 (MPM))中配置 Apache 请求处理方法:
- 工作者模型:此功能的美妙之处在于创建子进程,这些子进程生成一定数量的线程和侦听器线程。 侦听器线程侦听连接并将它们传递给线程进行处理。
- 流程模型:这是旧方法。 它很慢并且可以拒绝高负载的连接。 小型网站可能不会注意到这一点,但大型网站会。
- 事件模型:像工作模型一样,它创建一个监听线程,然后将其传递给工作线程。
Nginx worker 可以同时支持数千个 HTTP 客户端连接。 NGINX 因其轻量级架构、高性能和可扩展性而备受推崇。
动态内容
使用相同的基准测试动态内容。 它显示出完全相同的速度。 这是因为所有请求都在与两台服务器相同的 PHP 运行时环境中处理。
静态内容
很明显,Nginx 比 Apache 快。 它通过运行多达 1000 个连接进行了测试。 基准测试表明,Nginx 的执行速度比 Apache 快 2.5 倍,并且占用的内存更少。
Nginx 是并发静态内容处理的最佳选择。
操作系统支持
Apache 可用于所有操作系统,包括 Windows、Linux 和 UNIX。 NGINX 在 UNIX 平台上很稳定,在 Windows 上也受支持。
缓存
缓存,简单来说,是在访问者访问之前准备内容的行为。 这意味着您可以请求内容而不是搜索它。 它已经为他们准备好了,他们会尽快收到。
Apache 提供三种类型的缓存来提高其性能:
- 文件缓存是一项特殊服务,允许在启动时预加载文件,从而增加访问时间并在需要时加快检索速度。
- 两种状态——与对象缓存共享价值。
- 带有 RFC266 三态缓存的智能缓存——允许对本地存储的动态内容进行智能缓存。
Nginx 缓存动态内容,允许更快的加载速度并减少服务器负载。
这是 Nginx 用来缓存数据的两个指令:
- Proxy_cache:激活缓存
- procy_cache_path 设置缓存路径,配置
即使服务器关闭,Nginx 也能够显示缓存的 Web 内容。
在某些情况下不建议使用缓存。
文件与基于 URI 的解释
Apache 使用Directory块和FileE块来解释文件系统资源请求。 服务器尝试通过跟踪端口号和主机来定位文件。
当找不到匹配项时,Apache 会在文件系统中搜索满足请求的替代方法。
- 别名:将 URL 映射到文件系统位置。 它允许您存储DocRoot以外的文档。
- 重定向:按以下方式工作:服务器将旧 URL 映射到新 URL 并重定向客户端,以便它们可以在不同位置获取资源
- 位置:可以通过使用块来处理 URL。
另一方面,NGINX 允许服务器充当代理,因此它主要处理 URI。 配置块主要由服务器和位置块使用。

- 服务器块:配置文件子集标识处理请求的虚拟服务器。 服务器管理员可以将块分配给不同的域和端口,以允许将虚拟服务器配置为处理某些类型的连接。
- 位置块:它是处理对各种资源和 URL 的请求的服务器块。 它将请求路由到文件系统中的正确文件位置。
灵活性
Apache 的动态模块加载已经有很长一段时间了,可以轻松定制。 Nginx Plus 是一个基于 Nginx 构建的软件模块,充当负载均衡器、Web 服务器和内容缓存。 除此之外,可以从此模块运行其他软件模块。
两个 Web 服务器都支持核心操作功能。
安全
两台服务器都被认为是安全的,问题只能由糟糕的配置引起。 这些是您应该在信中遵循的关键点。
对于阿帕奇
- 配置服务器配置文件以保护您的系统免受.htaccess 覆盖
- 修改目录ServerRoot的权限
- 为避免 DoS 攻击,请调整配置。
- 始终使您的服务器保持最新状态。
- 反检查 CGI 脚本。
- 确保您有正确的服务器端包含。
- 密切关注您的日志。
对于 Nginx:
- 应包括安全标头。
- 禁用server_tokens指令以隐藏您的 Nginx 版本。
- 要减少攻击者的漏洞利用,请禁用不需要的模块。
- 应该禁用不必要或不需要的 HTTP 方法。
- 将您的服务器升级到最新版本。
- 为避免 DoS 攻击,请禁用资源。
支持和文档
Apache HTTP 服务器邮件列表提供社区支持。 您还可以通过 Stack Overflow 或 IRC 渠道获得支持。 第三方渠道也提供 Apache 商业支持,但没有维护官方列表。
NGINX 支持 IRC、邮件列表和 Stack Overflow。 NGINX Plus 是一款商业产品,提供了负载均衡和服务器监控等附加功能。
两台服务器都提供了惊人的文档。 Nginx Wiki 在 Nginx 上可用。 Apache 通常有更多来自外部各方的支持,因为它存在的时间更长。
Apache VS NGINX 服务器:优点和缺点
在托管之前,您必须选择与您的网站需求兼容的 Web 服务器。 珍惜每台服务器的优缺点至关重要。 本节将讨论相同的内容。
Apache Web 服务器
Apache 肯定比 Nginx 更古老,是许多网站管理员的首选。 它适用于各种操作系统,包括 Windows、Unix 和 Linux。
阿帕奇的优势
- 提供。 htaccess 可以在每个目录的基础上使用来覆盖系统范围的系统范围设置。
- 包括提供额外安全性的 mod_security 和 mod_evasive 模块。
- 动态加载和卸载模块
- 使用每个进程一个连接的模型。
- 出色的支持和文档。
- 动态内容服务的高性能
阿帕奇的优势
- 高流量的网站可能存在性能问题。
- 与 Nginx 相比,静态内容显示速度较慢。
- 无法同时处理多个请求。
- 可以进行详细的配置和管理。 不建议初学者使用。
Nginx 网络服务器
可以使用轻量级、快速且简单的 Web 服务器 Nginx 。 它专为高流量的网站而设计。
Nginx 的优势
- 防止 DDoS 攻击的可选配置。
- 它在多处理器环境中运行良好。
- 有许多选项可用于优化和交付静态内容。 它提供静态内容的速度比 Apache 快 2.5 倍,并且占用的内存更少。
- 非阻塞、事件驱动的架构需要更少的内存和 CPU。
Nginx的缺点
- NGINX 不支持 Apache 的.htaccess 文件。
- 缺少日志监控工具——将日志写入您必须手动导航的文件。
- 可用的模块数量较少。
- 无法原生处理动态内容。
- 支持 Linux 和 Unix 操作系统 - Windows 支持有限。
何时使用每台服务器
我们可以看到 Apache 和 Nginx 都拥有强大、灵活、优秀的 Web 服务器。 Apache 是动态内容的最佳选择,而 Nginx 最适合高流量网站的静态内容和媒体流。 底线是这个:
使用 Nginx
- 如果您使用的是专用主机或VPS 。
- 您可以管理传入流量,然后将其分发到上游服务器。
- 您管理一个非常受欢迎的网站,并且拥有大量静态材料。
使用阿帕奇
- 如果您使用共享主机。
- Web 开发人员经常使用 Apache,因为它易于配置。
- 您将欣赏支持社区及其提供的丰富资源。
一起工作:何时同时使用 Nginx 和 Apache
现在您知道 Apache 或 NGINX 的优缺点了。 在许多情况下,两台服务器都能很好地协同工作。
NGINX 传统上被放置在 Apache 之前,以充当反向代理。 NGINX 能够处理多个并发请求和连接,从而可以容纳客户端。
允许 NGINX 只对它自己可以处理的请求和进程进行排序可以避免过载问题。 Apache 仍然能够处理更少量的请求。
NGINX 也可以轻松扩展,因为它与服务器池通信并允许添加服务器来处理特定请求。
结论
我们希望 Apache 和 NGINX 之间的区别现在很清楚。 您还可以确定哪一个最适合您的需求。 Apache 和 NGINX 都强大、灵活,并提供了令人难以置信的性能。 两者都可以相互竞争。
各种有形的差异会显着影响性能、功能和实施每个解决方案的时间。 当然,没有任何 Web 服务器可以满足所有人的所有要求和需要。 最好选择满足您需求的那一款。