`
isiqi
  • 浏览: 16499103 次
  • 性别: Icon_minigender_1
  • 来自: 济南
社区版块
存档分类
最新评论

生产环境中的一些web server(主要是三巨头apache, nginx, lighttpd)

阅读更多

关于生产环境中使用的Web Server

转载请注明原文链接:http://blog.csdn.net/omohe/archive/2009/07/09/4335735.aspx

版本:v1.0 作者:OMO 最后修改时间:2009.07.09


1. Apache服务器和nginx的优缺点:
我们之前大量使用Apache来作为HTTPServer。

Apache具有很优秀的性能,而且通过模块可以提供各种丰富的功能。

1)首先Apache对客户端的响应是支持并发的 ,运行httpd这个daemon进程之后,它会同时产生多个孩子进程/线程,每个孩子进程/线程分别对客户端的请求进行响应;
2)另外,Apache可以提供静态和动态的服务 ,例如对于PHP的解析不是通过性能较差的CGI实现的而是通过支持PHP的模块来实现的(通常为mod_php5,或者叫做apxs2)。
3)缺点:
因此通常称为Apache的这种Server为process-based server ,也就是基于多进程的HTTPServer,因为它需要对每个用户请求创建一个孩子进程/线程进行响应;
这样的缺点是,如果并发的请求非常多(这在大型门户网站是很常见的)就会需要非常多的线程,从而占用极多的系统资源CPU和内存。因此对于并发处理不是Apache的强项。
4)解决方法:
目前来说出现了另一种WebServer,在并发方面表现更加优越,叫做asynchronous servers异步服务器。最有名的为Nginx和Lighttpd。 所谓的异步服务器是事件驱动程序模式的event-driven,除了用户的并发请求通常只需要一个单一的或者几个线程。因此占用系统资源就非常少。这几种又被称为lightweight web server。
举例,对于10,000的并发连接请求,nginx可能仅仅使用几M的内存;而Apache可能需要使用几百M的内存资源。


2. 实际中单一的使用:
1)关于单一使用Apache来作为HTTPServer的情况我们不用再多做介绍,非常常见的应用;
上面我们介绍到Apache对于PHP等服务器端脚本的支持是通过自己的模块来实现的,而且性能优越。
2)我们同样可以单单使用nginx或者lighttpd来作为HTTPServer来使用。
nginx和lighttpd和Apache类似都通过各种模块可以对服务器的功能进行丰富的扩展,同样都是通过conf配置文件对各种选项进行配置。
对于PHP等,nginx和lighttpd都没有内置的模块来对PHP进行支持,而是通过FastCGI来支持的。
Lighttpd通过模块可以提供CGI, FastCGI和SCGI等服务,Lighttpd is capable of automatically spawning FastCGI backends as well as using externally spawned processes.
nginx则没有自己提供处理PHP的功能,需要通过第三方的模块来提供对PHP进行FastCGI方式的集成。
nginx has module support for FastCGI via a built-in module, SCGI and WSGI via 3rd Party module. The user must be able to spawn the processes separately because nginx is not able to automatically spawn them [9]. nginx does not support normal CGI applications [10], which is actually a security benefit.

详细可以参看:http://www.wikivs.com/wiki/Lighttpd_vs_nginx

3.反向代理Reverse Proxy:
0) 代理服务器的概念proxy server:

代理服务器
的概念很容易理解,就是通常作为两台机器中间的机器,需要提供的功能往往有:
缓存caching,安全, 负载均衡load banlancing。
所谓的负载均衡就是,很多机器使用一个代理的时候,代理服务器需要对各个服务器进行均衡。
我们常见的代理是正向的代理,例如我们机房有20台电脑要上网,现在只有一个电脑可以上网,那么可以使用这台电脑作为代理服务器,所有通过网络的数据传输都要经过该代理服务器。

而反向代理,是和正向代理相反的 ,正向代理针对服务接收方用户来说,反向代理或者叫做服务器端代理是针对服务器端的,意思是有多台服务器,反向代理服务器对用户的请求代理发送给其中的一台服务器进行处理。
更多可以参看:http://en.wikipedia.org/wiki/Proxy_server

1) 实际中对于一个大型网站,我们通常使用很多台sever来构成一个cluster来对用户的各种请求进行响应。
因此通常需要一台或者多台反向代理服务器来对多台Server进行服务。
这个反向代理服务器需要提供的功能一般都包括:
安全方面;缓存压缩功能;负载均衡功能;
具体可以参看:http://en.wikipedia.org/wiki/Reverse_proxy

(需要注意反向代理服务器和防火墙优点类似,但是防火墙一般只有安全方面的考虑,没有缓存和负载均衡方面的功能。)

3) 综上,实际中Web服务器端的架构
通常是多台Web服务器运行并行地提供服务;同时还需要在Web服务器前段部署一台或者多台反向代理服务器,一方面缓存一些静态数据,或者将Web服务器动态产生的一些内容缓存,另一方面通过负载均衡功能,可以均匀地将用户的并发请求传递给多台Web服务器进行处理。
这样一方面可以大大降低后面每台Web服务器的负担;另一方面可以实现多台服务器的负载均衡。

4. 实际中使用nginx或者lighttpd当做反向代理服务器,后台布置多台ApacheHTTPServer:
1)上面说到,nginx和lighttpd的优点在于速度快,轻量级,在处理多用户并发方面要大大优于Apache服务器。
因此我们通常可以把他们作为反向代理服务器放置到多台的Apache Web服务器前段,来一方面缓存数据,另一方面实现多台服务器的负载均衡。
2)当然了Apache本身通过mod_proxy和mod_cache也可以实现反向代理和缓存功能 ,但是在处理高并发方面还是无法与nginx和lighttpd这种轻量的异步模式的服务器来比较。
3)另外,利用nginx和lighttpd的反响代理功能,我们可以通过设置其configuration文件,当客户端请求的是静态内容(例如一些图片,js,html文件等)的话,直接由nginx或者lighttpd进行响应;
如果需要访问动态内容(通常需要实时从数据库中读取)的话,则通过反向代理,nginx等可以将请求发送给后台等待的Apache进行响应,然后Apache将相应的结果返回给nginx,后者再响应用户的时候还可以进行缓存。
4)有时候还可以使用一些缓存的工具,例如Squid。
另外nginx也提供了对一些缓存功能的支持,例如memcache 等。
5)因此如果从图形来分析的话,通常的架构如下:
http://sudone.com/archie/app-nginx-squid-nginx.html
http://sudone.com/archie/app_nginx_squid.html
http://www.linuxvirtualserver.org/architecture.html

因此总结,实际中,我们可以使用:nginx-squid-apache的方式来构建server cluster;
也有一些人,纯粹使用nginx代替了apache不再使用apache了...
分享到:
评论

相关推荐

    三大WEB服务器对比分析(apache ,lighttpd,nginx)

    三大WEB服务器对比分析(apache ,lighttpd,nginx) 分析的还不错

    Web服务器选型(Apache+Nginx+Lighttpd)之性能对比测试报告.pdf

    这篇性能对比测试报告主要关注了三个主流的Web服务器——Apache、Nginx和Lighttpd在性能上的差异。测试的目的是为了评估这三款服务器在实际应用中的性能表现,为未来的项目选择提供依据。测试环境是在一台配置为8核...

    nginx lighttpd apache 之间的区别.doc

    标题中的“nginx lighttpd apache 之间的区别”指的是在IT行业中选择Web服务器时常见的三个选项:Nginx、Lighttpd和Apache。这三种服务器在技术特性、性能、资源消耗和适用场景上都有各自的特点。 首先,让我们详细...

    Linux服务器端Web服务三剑客(Apache Lighttpd Nginx).docx

    自1996年以来,Apache一直是互联网上最受欢迎的Web服务器,尽管市场份额近年来受到了如IIS、GWS、Lighttpd和Nginx等竞争对手的挑战,但其市场占有率仍然居首。 Apache的安装在许多Linux发行版中都是预装的,如...

    套件php 集成最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader

    首先,Apache、Nginx和LightTPD是三种流行的Web服务器软件。Apache是最广泛使用的开源HTTP服务器,具有丰富的模块和广泛的社区支持。Nginx以其高性能和低内存占用著称,尤其适合高并发场景。LightTPD则是一款轻量级...

    实战Nginx取代Apache的高性能Web服务器_文字版

    在很多场景下,Nginx被用作替代Apache服务器的选择,尤其是在高流量网站和需要负载均衡的环境中。本实战指南旨在探讨如何通过Nginx实现高性能的Web服务,以提升网站的响应速度和稳定性。 一、Nginx与Apache的性能...

    Nginx+Apache搭建前后端web生产环境

    在构建高效的Web生产环境时,通常会考虑使用多种服务器软件来优化不同的工作负载。Nginx和Apache就是这样的两个常用工具。Nginx以其高性能、轻量级的特性,擅长处理静态内容和作为反向代理,而Apache则以其强大的...

    apache到nginx配置文件转换工具

    一个开源的Linux下运行... 该工具从Apache Web服务器中的各模块功能的角度进行分析,生成Nginx中相应模块的配置方式,然后以报告的形式生成转换后的Nginx配置文件。 官网:https://github.com/leeleander/apache2nginx

    php运行环境搭建(apache nginx)

    这里我们关注的是两种常见的服务器环境配置:Apache和Nginx,这两种服务器软件与PHP和MySQL的集成。这两种环境配置都能为PHP提供稳定且高效的运行平台。 **Apache + PHP + MySQL** Apache是世界上最流行的Web...

    jquery-upload-progress, 上传进度栏使用 apache Nginx 和lighttpd上传进度模块.zip

    jquery-upload-progress, 上传进度栏使用 apache Nginx 和lighttpd上传进度模块 它可以与apache上传进度模块,Nginx 上传进度模块或者lighttpd一起使用,在这里阅读更多: ...

    Apache + nginx + resin 详细配置

    Apache、Nginx和Resin都是在Web服务器领域中广泛使用的软件。Apache是经典的HTTP服务器,Resin是一款高性能的Java应用服务器,而Nginx以其高效的反向代理和负载均衡能力著称。将这三者结合使用,可以构建出一个高...

    三大WEB服务器对比分析(apache-apache-nginx)

    ### 三大Web服务器对比分析:Apache、Lighttpd与Nginx #### 一、概述 随着互联网技术的发展,Web服务器成为了构建网站不可或缺的核心组件之一。本文将对三种流行的Web服务器——Apache、Lighttpd与Nginx进行深入...

    Nginx、Apache、Lighttpd禁止目录执行php配置示例

    本篇文章将详细介绍如何在Nginx、Apache和Lighttpd这三种流行的Web服务器上实现这一功能。 **Apache配置** 在Apache服务器上,我们可以使用`<Directory>`指令来限制指定目录内的PHP执行。以下是一个示例: ```...

    lighttpd和nginx比较

    - **稳定性**:经过多年的实战检验,Nginx在稳定性方面表现出色,被广泛应用于生产环境中。 - **代理服务**:Nginx在反向代理和负载均衡方面的功能十分强大,支持多种协议和服务。 - **缓存机制**:内置的缓存机制...

    Apache、lighttpd、Nginx用哪个搭建高性能服务器

    其实Apache、lighttpd、Nginx都用他们优点,在什么情况下我们如何去选择适合自己的Web高性能服务器,如何去搭建一个适合自己的架构环境,这个是一个很麻烦的事情。接下来,在ADC2012(AlibabaDeveloperConference2012...

    实战Nginx取代Apache的高性能Web服务器.rar

    《实战Nginx取代Apache的高性能Web服务器》一书,主要探讨了如何利用Nginx这一现代、高性能的Web服务器来替代传统的Apache服务器,以提升网站的运行效率和响应速度。Nginx以其异步非阻塞的I/O模型、模块化设计以及...

    phpStudy 最新 Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend 稳定 强大

    该程序包集成最新的Apache+Nginx+LightTPD+PHP+MySQL+phpMyAdmin+Zend Optimizer+Zend Loader,一次性安装,无须配置即可使用,是非常方便、好用的PHP调试环境。该程序绿色小巧简易迷你仅有35M,有专门的控制面板。...

Global site tag (gtag.js) - Google Analytics