Apache与Nginx的优缺点⽐较与选择
Apache是由伊利诺伊⼤学⾹槟分校的国家超级电脑应⽤中⼼(NCSA)开发。此后,Apache 被开放源代码团体的成员不断的发展和加强。⽬前可以说是世界使⽤排名第⼀的Web服务器软件。世界上⼤多数⽹站仍运⾏着Apache系统。Nginx是由Igor Sysoev为俄罗斯访问量第⼆的Rambler.ru站点开发的,第⼀个公开版本0.1.0发布于2004年10⽉4⽇。其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、⽰例配置⽂件和低系统资源的消耗⽽闻名。由于其出⾊的性能,Nginx在世界范围内受到了越来越多⼈的关注,更是被阿⾥巴巴旗下的淘宝⽹内部⼴泛使⽤。
今天,就针对Apache与Nginx的各⾃的优缺点进⾏⽐较,让⼤家在Apache与Nginx两者的选择时有⼀个⽐较与分析。
⼀、Apache与Nginx的简单⽐较
1、Nginx相对于Apache的优点
轻量级,同样web 服务,⽐apache占⽤更少的内存及资源;
抗并发,nginx 处理请求是异步⾮阻塞的,⽽apache 则是阻塞型的,在⾼并发下Nginx更能保持低资源、低消耗、⾼性能;
⾼度模块化的设计,编写模块相对简单;
社区活跃,各种⾼性能模块出品迅速,⽽Appche在社区活跃度上就相对低迷,这点很像博客程序Z-blog与WordPress;
2、Apache 相对于Nginx 的优点
Rewrite⽐Nginx的Rewrite要强⼤不少;
模块超多,基本想到的都可以到;
更少Bug,⽽Nginx的BUG则相对较多。
Apache在稳定性在⽐Nginx要好。
⼆、Apache与Nginx的详细⽐较
1、性能与稳定性的⽐较
⼀般来说,如果你对Web服务的性能需求⼤于稳定性,建议选⽤Nginx 。反之,如果您对Web服务稳定性的需求⼤于性能,那就选择Apache 。Apache的各种功能模块⽐Nginx要多要好,例如现在很流⾏
的SSL的模块就⽐Nginx要好,可配置项也多。nginx和apache区别
这⾥要注意⼀点,epoll(freebsd上是kqueue)模型是Nginx处理性能⾼的根本理由,但并不是所有的情况下都是epoll⼤获全胜的,如果本⾝提供静态服务的就⽂件相对较少,Apache的select模型或许⽐epoll更⾼性能。当然,这只是根据⽹络IO模型的原理作的⼀个假设,真正的应⽤还是需要实测了再说的。
2、不同使⽤环境的⽐较
作为Web服务器:相⽐Apache,Nginx 使⽤更少的资源,⽀持更多的并发连接,体现更⾼的效率,这点使Nginx尤其受到虚拟主机提供商的欢迎。在⾼连接并发的情况下,Nginx是Apache服务器不错的替代品。在美国Nginx是虚拟主机服务提供商⾸选的软件平台之,毕竟在同等资源下,Nginx能够⽀持⾼达 50,000 个并发连接数的响应,这才给了⼴⼤虚拟主机商能够在不限制并发连接数有了宣传的底⽓。
作为负载均衡服务器:Nginx既可以在内部直接⽀持Rails和PHP程序对外进⾏服务, 也可以⽀持作为HTTP代理服务器对外进⾏服务。 Nginx 采⽤C语⾔进⾏编写, 不论是系统资源开销还是CPU使⽤效率都⽐Perlbal要好很多。
作为邮件代理服务器:Nginx 同时也是⼀个⾮常优秀的邮件代理服务器(最早开发这个产品的⽬的之
⼀也是作为邮件代理服务器),⽬前不少知名的企业都采⽤Nginx作为邮件代理服务器。⽽Apache。我知道的好像只有Apache James,接触过,没有使⽤过。
3、配置与扩展性的⽐较
Nginx配置简洁, Apache复杂;
Nginx静态处理性能⽐Apache⾼3倍以上;
Apache对PHP⽀持⽐较简单,Nginx需要配合其他后端⽤;
Apache 的组件⽐ Nginx 多;
4、进程模型的⽐较
Apache与Nginx最核⼼的区别在于Apache是同步多进程模型,⼀个连接对应⼀个进程;nginx是异步的,多个连接(万级别)可以对应⼀个进程。在 Apache+PHP(prefork)模式下,如果PHP处理慢或者前端压⼒很⼤的情况下,很容易出现Apache进程数飙升,从⽽拒绝服务的现象。
5、静态处理上的⽐较
相对于Apache,Nginx处理静态⽂件好,耗费内存少,在相同的配置投⼊上,Nginx是更经济的⽅式。
6、前端与后端的⽐较
Apache有先天不⽀持多核⼼处理负载鸡肋的缺点,陈德馨博客个⼈建议使⽤Nginx做前端,后端⽤Apache。如果你的是⼀个⼤型⽹站的话,可以采⽤Nginx⾃代的集功能。
7、负载与并发的⽐较
从个⼈过往的使⽤情况来看,Nginx的负载能⼒⽐Apache⾼很多。最新的服务器也改⽤Nginx了。⽽且Nginx改完配置后可以测试⼀下配置有没有问题,⽽Apache重启的时候发现配置出错了,会很崩溃,改的时候都需要⾮常⼩⼼,现在好多集站点采⽤的⽅案是:前端Nginx抗并发,后端Apache集。
8、动态与静态处理的⽐较
Nginx处理动态请求是鸡肋,⼀般动态请求要Apache去做,Nginx更适合静态和反向。
通过以上针对Apache与Nginx的优缺点⽐较,相信您对于是选择Apache还是选择Nginx已经有了⼀定⽐较明确的⽅向了。
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论