Nginx vs Apache两大web服务器比较

admin3年前服务器70

互联网从90年代开始席卷全球,现如今基本上所有业务都可以在互联网上完成,互联网已经成为我们生活中不可或缺的一部分。

那么互联网web协议是怎样的呢?可以概括为访问者从给定的Web站点请求文档,而DNS和IP系统将该请求转发到正确的计算机。这台托管请求的网页的计算机将把网页提供给访问者。

网页本质上是HTML文档。为了能够向访问者提供不同的网页,提供服务的机器需要一个服务器程序。Nginx和Apache就是这个提供服务的的软件程序,它们可以处理请求进行分析,然后将用户所需要的文档信息返回给访问者。

Nginx与Apache

Nginx和Apache都是非常​​流行的Web服务器。

Apache于1995年首次发布,Nginx于2004年发布。

两者都被全球500强的大型公司使用。

Nginx的市场份额多年来一直在稳定增长。

在某些情况下,Nginx在性能方面更具有竞争优势。

Apache

随着蒂姆伯纳斯李创建了html,之后Apache就占据着web服务器的主导地位。现在发行的linux服务器,无论是redhat还是ubuntu,apache都是默认自带的服务器,因此,很多人都是使用Apache来进行web开发的,毕竟人家操作系统已经给你提供好了。

apache受欢迎的一个点就是他的.htacess文件配置管理。

Apache使用.htaccess进行配置,它为处理传入请求的方式提供了很大的灵活性。不同的重定向规则,最大上传文件大小,URL重写,内存限制,目录保护,header头信息,cookie,查询字符串操作。

在服务器根目录中,目录树中的每个级别或目录都可以具有自己的.httaccess文件,并具有自己的配置。

对于共享主机提供商,这是一个梦想,因为他们可以在同一台计算机上为数百个用户提供一种配置其网站服务方式的方式,而不会影响其他网站。客户可以在受限的共享托管环境中配置许多详细信息,而无需接触全局服务器配置。

但是,这种灵活性是以性能为代价的:“无论您实际上是否使用它们,允许.htaccess文件都会导致性能下降!”

每次启用.htaccess文件时,Apache都必须从请求的URL或文件中遍历整个目录树,直到所有的更高级别,直到服务器的根目录,然后针对每个请求加载它们。

apache还有一个受欢迎的点是他的模块机制。

Apache便允许用户安装模块,然后根据需要启用/禁用它们。

apahce有很多好用的模块,比如压缩,加密,日志记录,重定向到更高级的内容,例如使用高级语法编辑请求和响应,正是有了这些模块,才让Apache处理请求更加多样化。

nginx

Nginx(也称为nginx或NGINX)是在2004年由俄罗斯开发人员Igor Sysoev首次公开发行的。

Nginx是专门为解决Apache Web服务器的性能限制而编写的。

Nginx发布后,主要用于提供静态文件,并在Apache安装之前用作负载平衡器或反向代理。 随着网络的发展以及对速度和硬件使用效率的高要求,越来越多的网站开始使用Nginx完全替换Apache,这也要归功于更成熟的软件。

现在市场上nginx的份额已经超过了Apache,很多大公司都开始采用nginx作为后端的web服务器,有些大公司甚至会修改nginx的部分代码来使用,比如我们熟知的Tengine。

nginx最初设计的时候就是模块化的思想,它的所有功能都是采用模块形式提供的,需要什么功能,只要对应加载相应的模块就可以。

nginx一直都在全速发展着,目前最新的web技术quic和http3也已经在最新版的nginx中提供实现了。

缓存

apahce和nginx都提供了缓存功能。apache有mod_cache模块,nginx也有fastcgi缓存。可以说没有缓存的web系统几乎不可能支撑如今高访问的情况。当然,说道缓存,最专业的还是Varnish HTTP。不过因为nginx可以和它完美地结合,所以这也是越来越多人拥抱nginx的一个理由。

apache和nginx处理请求方式

apache和nginx最大的不同在于它们处理请求的方式。

apache使用MPM(Multi-Processing-Modules)处理请求。

早期的mpm是prefork模块。在这种模式下,Apache会在每个请求中生成一个线程的新进程。该模块与mod_php一起使用,意味着Apache服务器在每个进程中都嵌入了一个PHP解释器,虽然可能这个请求只是请求css等静态文件。这是非常低效的。

在后来的几年中,Apache开发了多线程工作程序mpm,之后又开发了事件mpm。它们都减轻了许多Apache的性能问题。切换到php-fpm使得Apache仍然可以成为当今竞争性的解决方案,并且消除了.htaccess的使用,这让apache的处理效率提升了很多。

Nginx使用异步,非阻塞事件来处理请求。

简而言之,Apache对每个连接都使用进程(对于worker mpm,它使用线程)。随着流量的增加,它很快变得太昂贵了。

事件mpm在优化方面更进一步,但是一些测试表明它不能超过Nginx。尤其是当我们谈论静态文件时,Nginx的服务量是Apache的两倍。

Nginx理想情况下,每个CPU /内核只有一个工作进程。 Nginx工作进程的区别在于,每个工作进程可以处理每个工作进程成千上万的传入网络连接。无需为每个连接创建新的线程或进程。

总结

从目前的的发展眼光来看,nginx却是比apache的性能更优越,而且有越来越多的辅助插件构建在nginx上面,所以,如果你的web项目刚起步,建议您选择nginx来作为服务器,它可以给你提供更优秀的性能体验,当然,对于中小型项目来说,apahce依然也是不错的选择。特别是他的.htaccess确实非常好用。

免责声明:本文内容来自用户上传并发布,站点仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。请核实广告和内容真实性,谨慎使用。

相关文章

怎么做好web服务器安全措施

做好web服务器安全措施的方法:1、需要将服务器远程默认端口进行修改,防止被黑客扫描攻击;2、需要给服务器安装防火墙并关闭不必要的服务和端口,从而降低服务器被攻击的风险;3、需要将服务器管理员密码进行...

配置IIS网站web服务器的安全策略配置解决方案

通常地,大多数Web站点的设计目标都是:以最易接受的方式,为访问者提供即时的信息访问。在过去的几年中,越来越多的黑客、病毒和蠕虫带来的安全问题严重影响了网站的可访问性,尽管Apache服务器也常常是攻...

Web服务器租用如何选择配置?

对于web服务器租用来说,主要是以CPU,内存,硬盘等硬件配置来作为主要的基准,同时选择合适的带宽,流量,硬防,这样能够保证网站正常需求,当然作为站长,还要根据网站增长趋势和发展情况来对服务器的拓展性...

单台web服务器如何尽可能的提高网站性能

我觉得首先要选择一个合适的环境,对于大多数php站点来说,运行在lnmp(linux+nginx+mysql+php)环境下是个理想的选择.首先一点linux对比win的优势我就不说了。其次nginx...

HBuilder如何设置web服务器

WEB服务器也称为WWW(WORLD WIDE WEB)服务器,主要功能是提供网上信息浏览服务,本次小编就HBuilder如何设置web服务器进行介绍。HBuilder设置web服务器步骤 ...

windows下三种web服务器搭建方式

一、第一种方法(live-server)1、安装方法:Npm安装: npm install -g live-server(前提是先安装node.js)然后在所在项目目录下,打开命令行工具,输入 liv...