标签:
Nginx与Apache的异同
Nginx和Apache都是HTTP服务器软件,在功能实现上都采用模块化的结构设计,都支持通用的语言接口,如PHP,PERL,PYTHON等,同时还支持正反向代理,虚拟主机,URL重写,压缩传输,SSL加密传输。
二者之间的最大差别是Apache的处理速度很慢且占用较多内存资源,nginx则不然。
在功能实现上,Apache的所有模块都支持动静态编译,而nginx则都是静态编译的,同时Apache对FCGI的支持不好。而nginx则非常好
在处理连接方式上,nginx支持epoll,而Apache则不支持
在空间使用上,nginx安装包仅几百K,而Apache则较nginx庞大
注:FCGI 像是一个常驻(long-live)型的CGI,可一直运行者,只要激活,不需每次花时间去fork一次,同时还支持分布式运算,即FCGI程序可以在网站服务器以外的主机上执行,并接受来自其他网站服务器的请求。
FCGI是跟语言无关的,可伸缩架构的CGI的开放扩展,其主要行为是将CGI解释器进程保持在内存中,以获得较高的性能,众所周知,CGI解释器的反复加载是CGI性能低下的主要原因,如果CGI进程保持在内存中,并接受FCGI管理器的调度,则可获得较高的性能,伸缩性,fail-over特性等。
epoll 是Linux内核为处理大批量文件描述符而作的改进的poll,是Linux多路复用I/O接口,select/poll的增强版本,它能显著提高程序在大量并发中只有少量活跃下的CPU的利用率
nginx 优势
作为WEB服务器,NGINX处理静态文件,索引文件,自动索引效率高
作为web代理服务器,nginx可实现无缓存的反向代理加速,提高网站运行速度
作为负载均衡服务器,nginx可以在内部之间支持PHP,也可支持HTTP代理服务器对外进行服务,同时还支持简单的容错和利用算法进行负载均衡
在性能方面,nginx是专门为性能优化而开发的,在实现上注重效率,同时采用poll模型,可以支持更多并发连接,最大50000个并发连接,且占内存资源低
在稳定性方面,nginx采用了分段资源分配技术,使得CPU与内存的占用率很低,保持10000个无活动的连接,只占用2.5M内存。因此具有很强的抗DOS攻击能力
在高性能方面,nginx支持热部署,启动快,因此可以在不间断服务器的情况下对软件版本或配置升级。
Nginx 的模块与工作原理
nginx由内核和模块组成,内核设计微小简洁,完成的工作也非常简单,仅通过查找配置文件将client端请求映射到一个location block,而在location中所配置的每个指令将启动不同的模块去完成相应的工作。
nginx模块从结构上分为核心模块,基础模块和第三方模块,HTTP模块,event模块和mail模块属核心模块,HTTP access模块,HTTP FCGI模块,HTTP PROXY模块,HTTP rewrite模块属第三方模块 ,而HTTP upstream request hash模块,notice模块和HTTP access key模块属第三方模块。
nginx的模块从功能上分如下三类,
handlers(处理器模块),此类模块直接处理请求,并进行输出内容和修改headers信息等操作,handlers处理器模块一般只能有一个
filters (过滤模块)此类模块主要对 处理器模块输出的内容进行修改操作,最后由nginx输出。
proxies(代理类模块)。此类模块是nginx的HTTP upsteram 之类的模块,这些模块主要与后端一些服务比如FCGI等进行交互,实现服务代理和负载均衡等功能。
在工作方式上,nginx分为单工作进程和多工作进程两种模式,在单工作进程模式下,除主进程外,还有一个工作进程,工作进程是单线程的,在多工作模式下,每个工作进程包含多个线程,nginx默认为单工作进程模式
nginx的模块直接编译进nginx,因此属静态编译方式,启动后,模块自动加载,Apache则首先将模块编译为一个.so文件,然后在配置文件中定是否加载,在解析配置文件时,nginx每个模块都可能去处理某个请求,但是同一个处理请求只能有一个模块完成。
end!
以上内容整理自《高性能Linux服务器实战》。
标签:
原文地址:http://www.cnblogs.com/changbo/p/4966578.html