nginx服务器和apache服务器(Nginx vs Apache两大web服务器比较)
nginx服务器和apache服务器
Nginx vs Apache两大web服务器比较互联网从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确实非常好用。
- linux如何查看apache日志(限制 Apache日志文件大小的方法)
- apache跳转配置(Apache 的 order deny allow 设置说明)
- apache虚拟目录配置(Apache 添加虚拟目录注意事项)
- 安装apache服务失败怎么办(Apache安装后出现服务无法启动服务里启动出现错误代码1)
- apache配置403错误提示(apache documentroot指向htcdoc之外提示403错误的解决方法)
- xampp安装后启动apache弹出对话框(XAMPP下使用顶级域名绑定虚拟主机的配置方法和示例)
- apache https配置(Apache httpd 安装module mod_expires、mod_deflate的方法)
- apache架构设计参数详解(Apache之AllowOverride参数使用说明)
- win7如何搭建php环境(阿里云Win2016安装Apache和PHP环境图文教程)
- apache虚拟域名配置(Apache虚拟主机的配置和泛域名解析实现代码)
- centos7 apache配置(CentOSLinux下的apache服务器配置与管理方法分享)
- dedecms标签调用原理(DEDECMS栏目页开伪静态的方法apache服务器)
- apachemodule定义(使ApacheBench支持multi-url的方法)
- apache有几个配置文件linux系统(linux下使用Apache搭建文件服务器的步骤)
- apache服务器配置伪静态(apache中通过mod_rewrite实现伪静态页面的方法)
- mysql5.7.19下载及安装教程(Apache2.2.16+PHP5.3.3+MySQL5.1.49的配置方法)
- 2主力后腰缺阵 泰山队奇兵有望获重用,赛季0出场,迎来中超首秀(泰山队奇兵有望获重用)
- 三分71 生死战爆发 篮网旧将丁威迪今天成奇兵,助队赢球(三分71生死战爆发)
- 《红 雄安》系列广播剧第一集 水上奇兵雁翎队(雄安系列广播剧第一集)
- 小说 小伙穿越成刘备,用现代知识指挥作战,众谋士都看呆了(小伙穿越成刘备)
- 解析葡萄牙6-1瑞士 进攻多点开花,贡萨洛-拉莫斯一战成名(解析葡萄牙6-1瑞士)
- 这支 奇兵队 腕大 有范儿还各怀绝技,毒贩杀人犯见了都要仓皇而逃(这支奇兵队腕大)
热门推荐
- 启动sqlserver代理服务失败(SQL Server代理服务无法启动怎么办)
- docker的安装部署(Docker快速安装Zookeeper的详细教程)
- mac的mysql连接问题如何解决(MAC 中mysql密码忘记解决办法)
- phpstudy最佳配置(phpstudy如何开启openSSL?)
- sql server中通过datename获取日期中部分数据
- jquery如何实现倒计时
- axios实现原理(项目中Axios二次封装实例Demo)
- python如何用md5作为文档名(Python生成MD5值的两种方法实例分析)
- python测试websocket接口(Python如何爬取实时变化的WebSocket数据的方法)
- mysqlupdate语句用法(MySQL update set 和 and的区别)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9