简述
那时主要就对照下这两个非主流的WEB伺服器:lighttpd、apache、nginx
1、LIGHTTPD
1.1详述
Lighttpd 是两个瑞典人党委的开放源码WebLogicalDOC,具备极低的缓存开支,cpu保真度低,效能好,和多样的组件等特征。全力支持FastCGI, CGI, Auth,输入填充(output compress), URL改写, Alias等关键机能。
它采用FastCGI形式运转PHP时,将采用极少的PHP民主化积极响应非常大的mammalian量。
1.2 缺点
1)从灵活性上看,FastCGI是以分立的民主化池运转来CGI,原则上两个民主化倒下,控制系统能很轻而易举的弃置,接着重新配置捷伊民主化来运转方法论;
2)从可靠性上看, FastCGI和寄主的server全然分立, fastcgi是不是down也不能把server搞乱;
3)从操控性上看, FastCGI把动态方法论的处置从server中析出,大损耗的IO处理却是留下来寄主server,这种寄主server能一心作IO,对两个一般的动态页面而言,方法论处置可能将多于少部分, 大批的相片等动态IO处置全然不须要方法论程序的参予(注1)
4)从可扩展性上讲,FastCGI是两个独断的标准规范,全然能全力支持任何人词汇写的处置程序(php,java,python…)
1.3 全力支持作业控制系统
Linux(binary packages for FC3,SuSE,Debian,Gentoo,PLD-Linux,OpenWRT)BSD(FreeBSD,NetBSD,OpenBSD,MacOSX)SGIIRIXWindows(Cygwin)While it is known to compile cleanly onSolarisAIX2、APACHE
2.1 详述
Apache是世界排名第一的web伺服器,根据所作的调查,世界上百分之五十以上的web伺服器在采用apache。
Apache是以民主化为基础的结构,民主化要比线程消耗更多的控制系统开支,不太适合于多处置器环境,因此,在两个Apache Web站点扩容时,通常是增加伺服器或扩充群集节点而不是增加处置器。世界上很多著名的网站如Amazon、Yahoo!、W3 Consortium、Financial Times等都是Apache的产物。
2.2 缺点
几乎能运转在所有的计算机平台上.全力支持最捷伊http/1.1协议简单而且强有力的基于文件的配置(httpd.conf).全力支持通用网关接口(cgi)全力支持虚拟主机.全力支持http认证.集成perl.集成的代理伺服器能通过web浏览器监视伺服器的状态,能自定义日志.全力支持伺服器端包含命令(ssi).全力支持安全socket层(ssl).具备用户会话过程的跟踪能力.全力支持fastcgi全力支持java servlets2.3 全力支持作业控制系统
LinuxWindows其他3、NGINX
3.1详述
Nginx是俄罗斯人编写的十分轻量级的HTTP伺服器,Nginx,它的发音为“engine X”, 是两个高操控性的HTTP和反向代理伺服器,同时也是两个IMAP/POP3/SMTP代理伺服器。Nginx是由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发。Nginx是一款轻量级的Web 伺服器/反向代理伺服器及电子邮件(IMAP/POP3)代理伺服器,并在两个BSD-like 协议下发行。其特征是占有缓存少,mammalian能力强,事实上nginx的mammalian能力确实在同类型的页面伺服器中表现较好,中国大陆采用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
Nginx以事件驱动(epoll)的形式编写,所以有非常好的操控性,同时也是两个非常高效的反向代理、负载平衡,有研究表明能全力支持高达 50,000个mammalian连接数。。其拥有匹配 Lighttpd的操控性,同时还没有Lighttpd的缓存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。但是Nginx并不全力支持cgi形式运转,原因是能减少因此带来的一些程序上的漏洞。所以必须采用FastCGI形式来执行PHP程序。
3.2缺点
处置动态文件,索引文件和自动索引;打开文件描述符缓冲;无缓存的反向代理加速,简单的负载均衡和容错;FastCGI,简单的负载均衡和容错;组件化的结构。包括gzipping, byte ranges, chunked responses,和 SSI-filter等filter。如果由FastCGI或其它代理伺服器处置单页中存在的多个SSI,则这项处置能并行运转,而不须要相互等待。Nginx专为操控性优化而开发,操控性是其最关键的考量,实现上非常注重效率Nginx具备很高的灵活性。其它HTTP伺服器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能将会导致伺服器物理缓存耗尽频繁交换,失去积极响应,只能重启伺服器。例如当前apache一旦上到200个以上民主化,web积极响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与缓存保真度极低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M缓存,所以类似DOS这种的攻击对nginx而言基本上是毫无用处的。就灵活性而言,nginx比lighthttpd更胜一筹。Nginx全力支持热部署。它的启动特别容易,并且几乎能做到7*24不间断运转,即使运转数个月也不须要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。3.3作业控制系统
LinuxWindows(移植版本)其他3.4 推荐架构
nginx作为最前端的web cache控制系统,通常的架构如下
这个结构的缺点:
能采用nginx前端进行诸多复杂的配置,这些配置从前在squid是没法做或者做起来比较麻烦的,比如针对目录的防盗链。nginx前端能直接转发部分不须要缓存的请求。因为nginx效率高于squid,所以某些情况下能利用nginx的缓存来减轻squid压力。能实现url hash等分配策略能在最前端开启gzip填充,这种后面的squid缓存的纯粹是无填充文档,能避免很多无谓的穿透。因为nginx灵活性比较高,所以lvs不须要经常调整,通过nginx调整就能。squid的文件打开数按默认的1024就绰绰有余,不过处置的请求可两个都不能少。能启用nginx的日志机能取代squid,这种做实时点击量统计时能精确定位到url,不必要再用低效率的grep来过滤。因为nginx的负载能力高于squid,所以在用lvs分流时能不必分得特别均衡,出现单点故障的几率比较低。nginx和squid配合搭建的web伺服器前端控制系统架构:
前端的lvs和squid,按照安装方法,把epoll打开,配置文件照搬,基本上问题不多。
这个架构和app_squid架构的区别,也是关键点就是:加入了一级中层代理,中层代理的好处实在太多了:
gzip填充:填充能通过nginx做,这种,后台应用伺服器不管是apache、resin、lighttpd甚至iis或其他古怪伺服器,都不用考虑填充的机能问题。负载均衡和故障屏蔽:nginx能作为负载均衡代理采用,并有故障屏蔽机能,这种,根据目录甚至两个正则表达式来制定负载均衡策略变成了小case。方便的运维管理,在各种情况下能灵活制订方案。权限清晰:这台机器就是不写程序的维护人员负责,程序员一般不须要管理这台机器,这种假如出现故障,很容易能找到正确的人。对应用伺服器和数据库伺服器,最好是从维护人员的视线中消失,我的目标是,这些服务只要能跑得起来就能了,其它的事情全部能在外部处置掉。3种WEB伺服器的比较
以下是针对这三个web服务器的一些比较:
从上面的预测比较建议的一种方案是:
Apache后台伺服器(主要就处置php及一些机能请求 如:中文url)Nginx 前端伺服器(利用它占用控制系统资源少得优势来处置动态页面大批请求)Lighttpd相片伺服器