标签:nginx apache
本文绝大多数资料都是摘抄网上,自己做的只就是整合网上零散的资源然后加上自己的一点见解。简单的说apache httpd和nginx都是web服务器,但两者适应的场景不同,也就是两者专注于解决不同的问题。apache httpd:稳定、对动态请求处理强,但同时高并发时性能较弱,耗费资源多。nginx:高并发处理能力强、擅长处理静态请求、反向代理、均衡负载。
1、nginx相对于apache的优点:轻量级,同样起web服务,比apache占用更少的内存及资源,并发能力强,nginx处理请求是异步非阻塞模式,而apache则是同步阻塞模式,在高并发下nginx能保持低资源低消耗高性能,高度模块化的设计,编写模块相对简单,社区活跃,高性能模块出品迅速。
apche相对于nginx的优点:rewrite能力比nginx强大,模块超多,基本想到的都可以找到。apache的bug相比于nginx较少,比较稳定。一般来说,需要性能的web 服务,用nginx 。如果不需要性能只求稳定,那就用apache。
同步、异步、阻塞和非阻塞区别:
(1)同步:所谓同步,就是在发出一个功能调用时,在没有得到结果之前,该调用就不返回。
(2)异步:异步的概念和同步相对。当一个异步过程调用发出后,调用者不能立刻得到结果。实际处理这个调用的部件在完成后,通过状态、通知和回调来通知调用者。
(3)阻塞:阻塞调用是指调用结果返回之前,当前线程会被挂起。函数只有在得到结果之后才会返回。有人也许会把阻塞调用和同步调用等同起来,实际上它们是不同的。对于同步调用来说,很多时候当前线程还是激活的,只是从逻辑上当前函数没有返回而已。
(4)非阻塞:非阻塞和阻塞的概念相对应,指在不能立刻得到结果之前,该函数不会阻塞当前线程,而会立刻返回。
2、nginx配置简单,apache配置复杂,nginx静态处理性能比apache高3倍以上,但对动态处理请求弱。apache对PHP支持比较简单,nginx需要配合其他后端用,apache的组件比nginx多,现在nginx才是web服务器的首选。
3、最核心的区别在于apache是同步多进程模型,一个连接对应一个进程;nginx是异步的,多个连接(万级别)可以对应一个进程。nginx与apache两者处理请求的模型不同,直接导致了两点:(1) nginx的抗并发能力强很多。(2)nginx对资源需求更少。
4、nginx与apache结合使用。nginx的负载能力强,静态处理性能高,可以用作前端负责进行抗并发、负载均衡、做静态文件缓存,apache相对稳定,可用作后端处理动态请求。
5、nginx处理动态请求是鸡肋,一般动态请求要apache去做,nginx只适合静态和反向。
6、nginx优于apache的主要两点:1.nginx本身就是一个反向代理服务器 2.nginx支持7层负载均衡;其他的当然,nginx可能会比apache支持更高的并发,但是根据NetCraft的统计,2011年4月的统计数据,apache依然占有62.71%,而Nginx是7.35%,因此总得来说,apache依然是大部分公司的首选。
7、nginx配置文件简洁,正则配置让很多事情变得简单,运行效率高,占用资源少,代理功能强大,很适合做前端响应服务器。
8、作为 Web 服务器:相比 apache,nginx 使用更少的资源,支持更多的并发连接,体现更高的效率,这点使 Nginx 尤其受到虚拟主机提供商的欢迎。在高连接并发的情况下,nginx是apache服务器不错的替代品: nginx在美国是做虚拟主机生意的老板们经常选择的软件平台之一. 能够支持高达 50,000 个并发连接数的响应, 感谢nginx为我们选择了 epoll and kqueue 作为开发模型。nginx作为负载均衡服务器: Nginx 既可以在内部直接支持 Rails 和 PHP 程序对外进行服务, 也可以支持作为 HTTP代理 服务器对外进行服务。nginx采用C进行编写, 不论是系统资源开销还是CPU使用效率都比 Perlbal 要好很多.作为邮件代理服务器: nginx 同时也是一个非常优秀的邮件代理服务器(最早开发这个产品的目的之一也是作为邮件代理服务器), Last.fm 描述了成功并且美妙的使用经验。nginx 是一个安装非常的简单 , 配置文件非常简洁(还能够支持perl语法), Bugs 非常少的服务器: Nginx 启动特别容易, 并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够不间断服务的情况下进行软件版本的升级。
标签:nginx apache
原文地址:http://11837799.blog.51cto.com/11827799/1826624