Nginx vs Apache 比较

时间:2020-02-23 14:41:07  来源:igfitidea点击:

Apache和NGINX是在世界范围内使用的两种最受欢迎的开源Web服务器,它们控制着60%以上的市场份额。
尽管它们的功能非常相似,但是它们在体系结构,性能和安全性以及其他一些关键点方面有所不同。

但是,选择它们中的一个作为Web服务器并不总是那么容易,因为它们两个都具有出色的性能,并且表现出色。

NGINX与Apache

在本文中,我们将讨论Apache和NGINX之间的一些关键区别,以帮助您选择适合您需求的任何两者。

1.表现

Apache和NGINX均以不同方式提供静态和动态内容。
Apache使用传统的基于文件的方法来提供静态内容,例如CSS,JS或者图像文件。
但是,NGINX提供了许多选项来优化性能以提供静态内容。

NGINX更适合在极端负载下提供静态内容或者媒体。
根据一些基准测试报告,NGINX在提供静态内容时比Apache快2倍。

在处理动态内容(如PHP页面)的情况下,它们都将请求转发到单独的PHP环境。
虽然Apache直接参与处理PHP页面,但是Nginx使用php-fpm的服务来完成相同的工作。

如果使用PHP-FPM正确配置了NGINX,则可以非常有效地处理动态内容。
当使用PHP-FPM正确配置了多处理事件模块(mpm_event)时,Apache在处理PHP页面方面同样有效。

因此,在提供动态内容的情况下,Apache和NGINX都同样出色。

2.建筑

Apache和NGINX的设计架构完全不同,并且影响了它们处理来自客户端的连接和流量的方式。
Apache基于流程驱动的体系结构,在该体系结构中,Apache为每个连接请求创建一个新线程。
这会导致在繁忙的流量中占用大量资源,从而可能导致Apache问题。

另一方面,NGINX采用非阻塞事件驱动的体系结构,可以通过单个线程处理数千个并发请求。
在NGINX中,单个主进程(每个CPU)创建多个工作进程,每个工作进程只有一个线程。
结果,NGINX在有限的资源下非常有效地工作。
这与Apache相反,后者只能通过一个线程处理一个连接。

3.安全性

在安全性方面比较NGINX和Apache时,Apache和NGINX在具有良好安全记录的情况下均表现出色。
Apache的mod_evasive和mod_security模块通过减轻DDoS /暴力攻击并分别安装Web应用程序防火墙来提供附加的安全层。

Apache Software Foundation在处理安全问题和针对Apache HTTP服务器的拒绝服务攻击时遵循主动策略。
该基金会还发布安全公告,并鼓励用户报告Apache的任何新安全问题。

与Apache一样,NGINX也在其站点中列出了安全更新,并建议用户遵循一些建议的配置设置来缓解DDoS攻击。

4.模块

Apache和NGINX都可以使用模块进行扩展,但是使用模块合并功能的方式不同。
Apache正式支持大约60个模块,可以根据您的要求动态地加载或者卸载这些模块。

NGINX还支持模块的概念,但是较早的时候不可能将模块动态加载到模块中。
系统管理员习惯于编译模块以将其集成到核心中。
但是,在2015年初,NGINX获得了对动态模块加载的支持。
使用动态模块,您可以选择在运行时将单独的共享库文件作为模块加载-第三方模块和某些本机NGINX模块。

5.操作系统

Apache支持所有主要的Linux和Non-Linux操作系统,并且可以完美地在它们上运行。
NGINX还支持Linux和类似Unix的操作系统,但对Windows的支持是部分的。
NGINX在Widows中的性能也不如Linux强大。

6.支持

NGINX为其商业版本NGINX Plus提供官方支持。
商业版本在负载平衡,媒体流和监视领域中几乎没有添加任何功能。
对于免费版本,NGINX通过邮件列表,IRC和论坛提供社区支持。

虽然Apache没有任何商业版本,但是所有商业支持都可以通过第三方获得。
与NGINX一样,Apache还通过邮件列表,IRC和论坛提供社区支持。