Apache和NGINX是Web服务器业务中的两个主要参与者, 它们占Internet上Web流量的5%, 但它们彼此不同。
Apache是” Apache HTTP服务器”。它是由Apache Software Foundation开发和维护的开源, 高性能Web服务器软件。 Apache旨在创建符合当前HTTP标准的安全, 健壮和高效的商业级Web服务器。
由于Apache的灵活性, 体系结构简单性, 电源兼容性和多平台支持, 因此仍然是服务器管理员中的首选。它可以在几乎所有操作系统(例如Windows, UNIX, OSX, NetWare等)上运行。但通常与Linux结合使用。
Apache成为了WWW(万维网)的骨干, 它确实处于游戏的顶端, 但是当NGINX投入业务时, 服务器管理员的选择就改变了。
是的, 我们可以说NGINX在很多方面都无法与功能丰富的Apache竞争, 但是它的异步状态和单线程体系结构使其成为选择Apache的明智选择。
让我们看看Apache和NGINX之间的区别:
- Apache是开放源代码的HTTP服务器, 而Nginx是开放源代码的高性能异步Web服务器和反向代理服务器。
- Apache HTTP服务器中的错误修复, 支持, 维护和应用程序开发由来自世界各地的用户社区管理和维护, 并由Apache Software Foundation协调, 而Nginx由同名公司成立(成立于2011年) 。
- 两者之间的主要区别在于它们如何处理客户端请求。虽然Apache提供了多种多样的多处理模块来处理客户端请求和Web流量, 但Nginx的设计目的是用最少的硬件资源同时处理多个客户端请求。
- 在Apache中, 单线程仅与一个连接相关联, 而Nginx中的单个线程可以处理多个连接。所有进程与其他连接一起放入事件循环中, 并进行异步管理。此过程消耗较少的内存, 从而提高了性能。
- Apache HTTP Server具有缺乏可伸缩性的多线程体系结构。 Nginx遵循异步事件驱动的方法来处理多个客户端请求。其事件驱动的体系结构旨在即使在流量繁忙的情况下也可以提高性能。
- Apache服务器使用常规方法提供静态内容, 并在Web服务器本身内部本地处理动态内容。另一方面, Nginx无法在内部处理动态内容。它依赖于外部流程来执行。
Apache与NGINX
Apache | NGINX |
---|---|
Apache在Linux, BSD等所有Unix系统上运行, 并且完全支持Windows。 | Nginx在类似Unix的现代系统上运行;但是, 它对Windows的支持有限。 |
Apache使用多线程方法来处理客户端请求。 | Nginx遵循事件驱动的方法来服务客户请求。 |
Apache无法在繁重的网络流量下同时处理多个请求。 | Nginx可以使用有限的硬件资源同时高效地处理多个客户端请求。 |
Apache在Web服务器本身内部处理动态内容。 | Nginx无法本地处理动态内容。 |
Apache被设计为Web服务器。 | Nginx既是Web服务器又是代理服务器。 |
模块是动态加载或卸载的, 因此更加灵活。 | 由于模块无法动态加载, 因此必须在核心软件本身中进行编译。 |
一个线程只能处理一个连接。 | 一个线程可以处理多个连接。 |
Apache静态内容的性能低于Nginx。 | Nginx可以同时运行数千个静态内容连接, 速度是Apache的两倍, 并且使用的内存更少。 |