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确实非常好用。
- apache连接tomcat配置(Apache结合Tomcat实现动静分离的方法)
- apache 的服务器配置(正确维护配置Apache服务器的方法 保护系统安全)
- 搭建php和mysql的运行环境(Windows环境开发PHP完整配置教程Apache+Mysql+PHP)
- apache tomcat安装教程(Apache及Tomcat搭建集群环境过程解析)
- apache服务器对php的支持原理(php apache开启跨域模式过程详解)
- 做网站是使用nginx还是apache(web服务器软件Apache与Nginx的对比分析)
- discuz apache伪静态(apache中伪静态配置和使用Apache虚拟主机下Discuz伪静态)
- phpmysql完全学习手册教程(Windows下搭建PHP开发环境Apache+PHP+MySQL)
- apache配置详解(apache2.2和php5.2.17在windows下整合过程的错误解决方法)
- linux安装nginx启动页面访问不到(apache,nginx上传目录无执行权限的设置方法)
- apache安装与配置windows(Apache 安装和使用文档)
- 静态web服务器nginx(WEB服务器该选择 Apache 还是 Nginx?)
- nginx和apache(为什么 Nginx 比 Apache 更牛逼)
- nginx和apache服务器配置(Apache、Nginx 服务配置服务器端包含SSI)
- linux中apache是否启动怎么查看(Linux apache取消300错误页面Multiple Choices简单步骤)
- apache架构设计参数详解(Apache之AllowOverride参数使用说明)
- 15帅气男士发型,清爽时尚很有型,喜欢就试试(清爽时尚很有型)
- 哪几个历史人物被影协主席李雪健演的活灵活现(哪几个历史人物被影协主席李雪健演的活灵活现)
- 王伦狭隘,晁盖霸道,宋江奸诈骨头软,只有鲁智深才适合当寨主(王伦狭隘晁盖霸道)
- 他是梁山最早的头目,江湖人称 旱地忽律 ,宋江几乎将其遗忘(他是梁山最早的头目)
- 梁山创始人杜迁,为何不受宋江待见,只排名83位(梁山创始人杜迁)
- 法国面包(法国面包法棍)
热门推荐
- linux怎么恢复删除的数据(Linux利用lsof/extundelete工具恢复误删除的文件或目录)
- 移动端字号规范(吃透移动端 1px的具体用法)
- ecmascript编程语言(一篇文章弄懂ECMAScript中的操作符)
- nginx动静分离的原理(Nginx动静分离实现案例代码解析)
- python基于django的博客系统(利用django+wechat-python-sdk 创建微信服务器接入的方法)
- mysql删除的delete怎么找回(MySQL Delete 删数据后磁盘空间未释放的原因)
- docker打包镜像命令(docker 打包本地镜像,并到其他机器进行恢复操作)
- bootstraptable使用教程(bootstrap Table的使用方法总结)
- python模块光照强度(我如何用 CircuitPython 和开源工具监控温室)
- linux下安装nginx常见问题(Linux安装Nginx步骤详解)
排行榜
- 1
- 2
- 3
- 4
- 5
- 6
- 7
- 8
- 9