本文给大家带来的是PHP服务器Apache和Nginx的对比分析,有一定的参考价值。有需要的朋友可以参考一下,希望对你有帮助。
1.nginx相对于apache的优势:
轻量级,也是一种web服务,比apache占用更少的内存和资源。
反并发,nginx异步非阻塞处理请求,而apache阻塞,nginx在高并发下可以保持低资源、低消耗、高性能。
apache相对于nginx的优势:
重写比nginx的重写更强。
有这么多模块,你可以找到你基本上想到的一切。
bug少,nginx bug多。
超级巨星
存在就是原因。一般来说,需要性能的web服务使用nginx。如果你不需要性能,只需要稳定性,那么apache。后者的各种功能模块优于前者,比如ssl模块优于前者,可配置项多。这里需要注意的是,epoll (kqueue epoll(freebsd)网络IO模型是nginx处理性能高的根本原因,但并非所有案例都是epoll赢的。如果只有少数文件提供静态服务,那么apache的select模型可能比EPOLL具有更高的性能。当然,这只是基于网络IO模型原理的假设,真正的应用还是需要衡量的。
2.作为Web服务器:与Apache相比,Nginx使用的资源更少,支持更多的并发连接,表现出更高的效率,这使得Nginx特别受虚拟主机提供商的欢迎。在高并发连接的情况下,Nginx是Apache服务器很好的替代品:Nginx是美国虚拟托管业务所有者经常选择的软件平台之一。它可以支持多达50,000个并发连接的响应。感谢Nginx选择epoll和kqueue作为我们的开发模式。
Nginx作为负载均衡服务器:Nginx内部可以直接支持Rails和PHP程序进行外部服务,也可以支持外部服务作为HTTP代理服务器。Nginx是用C写的,在系统资源开销和CPU效率上比Perlbal好很多。
作为邮件代理服务器:Nginx也是一款优秀的邮件代理服务器(最早开发这款产品的目的之一就是做邮件代理服务器),Last.fm描述了成功而精彩的体验。
Ngx是一款安装非常简单、配置文件简单(也可以支持perl语法)、bug很少的服务器:ngix非常容易启动,几乎可以连续运行7*24,即使运行几个月也不需要重启。您也可以不间断地升级软件版本。
3.Nginx配置简单,Apache复杂。
Nginx静态处理性能比Apache高3倍以上。
Apache PHP支持相对简单,Nginx需要配合其他后端。
Apache的组件比Nginx多。
Nginx现在是Web服务器的首选。
4.核心区别在于apache是一个同步的多进程模型,一个连接对应一个进程。Nginx是异步的,多个连接(万级)可以对应一个进程。
5.nginx可以很好地处理静态文件,并且消耗更少的内存。但毫无疑问,apache目前仍然是主流,它有很多丰富的功能。所以需要匹配。当然,如果能够确定nginx适合需求,那么使用nginx会是一种比较经济的方式。
6.从个人以往的使用情况来看,nginx的负载能力远高于apache。最新的服务器也切换到了nginx。而且nginx更改配置后,无法测试配置是否有问题。apache重启后会发现配置错误,会崩溃。当它改变时,它会非常小心。现在有很多集群站。前端nginx是反并发的,后端apache集群是很好协调的。
7.nginx对动态请求的处理是鸡肋。一般来说,apache应该做动态请求。nginx仅适用于静态和反向请求。
8.从我个人的经验来看,nginx是一个非常好的前端服务器,负载性能很好。在老本上打开nginx,用webbench模拟一万个静态文件请求,很容易。Apache php和其他语言得到了很好的支持。另外,apache有强大的支持网络,比nginx开发时间更长,bug更少。但是,apache的缺点是不支持多核处理负载。建议前端使用nginx,后端使用apache。大型网站建议使用nginx自生成集群功能。
9.Nginx在两个主要方面优于apache。Nginx本身就是反向代理服务器2。Nginx支持7层负载均衡;其他当然,Nginx可能比apache支持更高的并发,但是根据2011年4月NetCraft的统计,Apache仍然占62.71%,而Nginx是7.35%,所以总体来说,Aapche仍然是大多数公司的第一,因为它成熟的技术和开发社区已经有了非常好的表现。
10.你对网络服务器的需求决定了你的选择。在大多数情况下,nginx都优于APACHE,比如静态文件处理、PHP-CGI支持、反向代理功能、前端Cache、连接维护等等。在Apache+PHP(prefork)模式下,如果PHP处理速度慢或者前端压力大,很容易因为Apache进程数量激增而造成拒绝服务的现象。
1.看看nginx lua模块:http://github.com/chaoslaw…apache的模块比nginx多,直接用lua实现Apache是最流行的。为什么呢?大多数人都懒得更新到nginx或者学习新东西。
12.对于nginx,我喜欢它的配置文件非常简洁。常规配置使许多事情变得简单高效,占用的资源更少,并且具有强大的代理功能。非常适合前端响应服务器。
13.Apache在处理动态上有优势,Nginx有更好的并发性和低CPU内存消耗。如果重写频繁,Apache更好。
Nginx的优势在于:
在网络的第七层工作,我们可以为http应用做一些分流策略,比如域名和目录结构。它的规则比HAProxy更强、更灵活,这也是它目前广泛流行的主要原因之一。Nginx能使用的场合比LVS多得多。
Nginx对网络稳定性的依赖非常小。理论上,它可以在ping的时候执行加载功能,这也是它的优势之一。相反,LVS非常依赖网络稳定性,我对此深有体会。
Nginx安装配置相对简单,测试方便。它基本上可以用日志打印出错误。LVS的配置和测试需要很长时间,LVS非常依赖网络。
它能承受高负载压力且稳定,在硬件较好的情况下一般能支持上万次并发,负载程度相对比LVS小。
Nginx可以通过端口检测服务器的内部故障,如状态码、超时等。服务器在处理网页时返回,并将错误的请求重新提交给另一个节点,但缺点是它不支持url检测。例如,如果用户正在上传文件,而处理上传的节点恰好在上传过程中失败,Nginx会将上传内容剪切到另一台服务器进行再处理,LVS会直接将其剪切掉。如果上传了大文件或重要文件,用户可能会不满意。
Nginx不仅是一款优秀的负载均衡器/反向代理软件,还是一款功能强大的Web应用服务器。LNMP也是近年来非常流行的web架构,在高流量环境下具有很好的稳定性。
Nginx作为Web反向加速缓存越来越成熟,比传统的Squid服务器速度更快,可以考虑作为反向代理加速器。
Nginx可以作为中级反向代理。在这个级别上,Nginx基本没有对手,唯一能和Nginx相提并论的就是lighttpd。但是lighttpd目前还没有实现Nginx的全部功能,配置也没有那么清晰可读,社区素材也远没有Nginx活跃。
Nginx还可以作为静态网页和图片服务器,性能无与伦比。Nginx社区非常活跃,有很多第三方模块。
Nginx的缺点是:
Nginx只能支持http、https和Email协议,使得应用范围变小,这是它的缺点。
后端服务器的运行状况检查只能通过端口来检测,不能通过url来检测。不支持直接持有Session,但可以通过ip_hash解决。