`

Lighttpd+Squid+Apache搭建高效率Web服务器

阅读更多

本文主要是介绍高并发情况下的服务器架构的知识。

Apache 通常是开源界的首选Web服务器,因为它的强大和可靠,已经具有了品牌效应,可以适用于绝大部分的应用场合。但是它的强大有时候却显得笨重,配置文件得让人望而生畏,高并发情况下效率不太高。而轻量级的Web服务器Lighttpd 却是后起之秀,其静态文件的响应能力远高于Apache,据说是Apache的2-3倍。Lighttpd的高性能和易用性,足以打动我们,在它能够胜任的领域,尽量用它。Lighttpd对PHP的支持也很好,还可以通过Fastcgi方式支持其他的语言,比如Python。

毕竟Lighttpd是轻量级的服务器,功能nginx lighttpd上不能跟Apache比,某些应用无法胜任。比如Lighttpd还不支持动态缓存,而现在的绝大部分站点都是用程序生成动态内容,没有缓存的话即使程序的效率再高也很难满足大访问量的需求,而且让程序不停的去做同一件事情也实在没有意义。首先,Web程序是需要做缓存处理的,即把反复使用的数据做缓存。即使这样也还不够,单单是启动Web处理程序的代价就不少,缓存最后生成的静态页面是必不可少的。而做这个是Squid 的强项,它本是做代理的,支持高效的缓存,可以用来给站点做反向代理加速。把Squild放在Apache或者Lighttpd的前端来缓存 Web服务器生成的动态内容,而Web应用程序只需要适当地设置页面实效时间即可。

 

    即使是大部分内容动态生成的网站,仍免不了会有一些静态元素,比如图片、JS脚本、CSS等等,将Squid放在Apache或者Lighttp前端后,反而会使性能下降,毕竟处理HTTP请求是Web服务器的强项。而且已经存在于文件系统中的静态内容再在Squid中缓存一下,浪费内存和硬盘空间。因此可以考虑将Lighttpd再放在Squid的前面,构成Lighttpd+Squid+Apache 的一条处理链, lighttpd在最前面,专门用来处理静态内容的请求把动态内容请求通过proxy模块转发给Squid,如果Squid中有该请求的内容且没有过期,则直接返回给Lighttpd。新请求或者过期的页面请求交由Apache中Web程序来处理 。经过Lighttpd和Squid的两级过滤,Apache需要处理的请求将大大减少,减少了Web应用程序的压力。同时这样的构架,便于把不同的处理分散到多台计算机上进行,由Lighttpd在前面统一把关。

 

    在这种架构下,每一级都是可以进行单独优化的,比如Lighttpd可以采用异步IO方式,Squid可以启用内存来缓存,Apache可以启用MPM 等,并且每一级都可以使用多台机器来均衡负载,伸缩性很好。

6
2
分享到:
评论
7 楼 valibo 2009-06-16  
Lighttpd+Squid+Apache搭建高效率Web服务器

可以写一些配置类的文档出来吗?

在linux中如何配置

6 楼 yunshida 2009-06-11  
如果有详细的说明文档就好了
lighttpd放在squid前面是什么概念?如何实现?
5 楼 bluemeteor 2009-06-03  
Light+Apache... why?
4 楼 roygbip 2009-06-03  
有没有详细搭建的文档阿,你这个搭建对操作系统平台有要求么?
3 楼 iammonster 2009-06-01  
NightTree 写道

如果我是ajax+纯html的方式,那是不是只用Lighttpd就可以很爽了???


呵呵,那是当然,不过那样你的交互性可以好吗?数据放在哪?

其实我现在是把一些图片视频和JS、CSS放在lighttpd上独立出来,这样很爽
2 楼 NightTree 2009-06-01  
如果我是ajax+纯html的方式,那是不是只用Lighttpd就可以很爽了???
1 楼 cjc 2009-06-01  
恩,不错的思路,采众家之所长

相关推荐

Global site tag (gtag.js) - Google Analytics