`

WEB服务器

 
阅读更多


在UNIX和LINUX平台下使用最广泛的免费web服务器是Nginx、NCSA HTTPd和APACHE服务器,而Windows平台NT/2000/2003使用IIS的WEB服务器。


在选择使用WEB服务器应考虑的本身特性因素有:性能、安全性、日志和统计、虚拟主机、代理服务器、缓冲服务和集成应用程序等,下面介绍几种常用的WEB服务器。


统计数据显示,超过80%的web应用程序和网站都是使用的开源web服务器。如下介绍目前市场上最流行的5大开源web服务器,并简要回顾它们的历史,技术特性以及更多相关内容,方便了解选择。


根据百度百科介绍:Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览;可以放置数据文件,让全世界下载。目前最主流的三个Web服务器是Apache、Nginx、IIS。


Apache HTTP Server

Apache HTTP Server,我们常常称之为httpd,或者更简单的Apache。它诞生于1995年,并在2015年2月20日度过了其20岁的生日。全球超过52%的网站使用了Apache,它是目前最流行的web服务器。


Apache httpd通常运行在Linux上,也可以部署在OS X和Windows之上,它的发布得到Apache许可证 2.0 版的许可。该web服务器自身使用模块化架构,加载其它额外的模块可以作为其额外特性。比如,加载mod_proxy模块可以增加服务器代理/网关的功能,加载mod_proxy_balancer模块可以为所有支持的协议提供负载平衡。在v2.4版本里,Apache可通过全新的mod_http2模块支持HTTP/2。


从1996年开始,Apache HTTP Server就已经是最为流行的web服务器了,这与它拥有伟大的文档和软件项目集成支持的特性是分不开的,你可以在Apache基金会的项目页面上找到它的更多信息。


Apache 源于NCSAhttpd服务器,经过多次修改,成为世界上最流行的Web服务器软件之一。 Apache是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来 使用。本来它只用于小型或试验Internet网络,后来逐步扩充到各种Unix系统中,尤其对Linux的支持相当完美。


Apache是以进程为基础的结构,进程要比线程消耗更多的系统开支,不太适合于多处理器环境,因此, 在一个Apache Web站点扩容时,通常是增加服务器或扩充群集节点而不是增加处理器。到目前为止Apache仍然是世界上用的最多的Web服务器,世界上很多著名的网站 都是Apache的产物,它的成功之处主要在于它的源代码开放、有一支开放的开发队伍、支持跨平台的应用(可以运行在几乎所有的Unix、 Windows、Linux系统平台上)以及它的可移植性等方面。


NGINX
Igor Sysoev从2002年开始开发NGINX,并在2004年发布了第一个公开版本。NGINX的开发是为了解决C10K(C10K是如何处理1万个并发连接的简写)问题,目前,它是第二流行的开源web服务器,全球有超过30%的网站在使用它。

NGINX依靠异步事件驱动架构来帮助其处理大量的并发会话,由于其对资源的轻量利用和伸缩自如的特性,它成为了广受欢迎的web服务器。

 

Nginx是俄罗斯人编写的十分轻量级的HTTP服务器, 是一个高性能的HTTP和反向代理服务器,由俄罗斯人 Igor Sysoev为俄罗斯访问量第二的 Rambler.ru站点开发

NGINX在类BSD(Berkeley Software Distribution)许可协议的授权下发布的,它不仅可作为web服务器进行部署,也可作为代理服务器或负载平衡器。你可以在NGINX社区网站找到它的更多信息。

Nginx以事件驱动的方式编写,所以有非常好的性能,同时也是一个非常高效的反向代理、负载平衡。其拥有匹配 Lighttpd的性能,同时还没有Lighttpd的内存泄漏问题,而且Lighttpd的mod_proxy也有一些问题并且很久没有更新。但是Nginx并不支持cgi方式运行,原因是可以减少因此带来的一些程序上的漏洞。所以必须使用FastCGI方式来执行PHP程序。


nginx做为HTTP服务器,有以下几项基本特性:


处理静态文件,索引文件以及自动索引;打开文件描述符缓冲.


无缓存的反向代理加速,简单的负载均衡和容错.


FastCGI,简单的负载均衡和容错.


模块化的结构。包括gzipping, byte ranges, chunked responses,以及 SSI-filter等filter。如果由FastCGI或其它代理服务器处理单页中存在的多个SSI,则这项处理可以并行运行,而不需要相互等待。


Nginx专为性能优化而开发,性能是其最重要的考量,实现上非常注重效率。它支持内核Poll模型,能经受高负载的考验,有报告表明能支持高达 50,000个并发连接数。


Nginx具有很高的稳定性。其它HTTP服务器,当遇到访问的峰值,或者有人恶意发起慢速连接时,也很可能会导致服务器物理内存耗尽频繁交换,失去响应,只能重启服务器。例如当前apache一旦上到200个以上进程,web响应速度就明显非常缓慢了。而Nginx采取了分阶段资源分配技术,使得它的CPU与内存占用率非常低。nginx官方表示保持10,000个没有活动的连接,它只占2.5M内存,所以类似DOS这样的攻击对nginx来说基本上是毫无用处的。就稳定性而言,nginx比lighthttpd更胜一筹。


Nginx支持热部署。它的启动特别容易,并且几乎可以做到7*24不间断运行,即使运行数个月也不需要重新启动。你还能够在不间断服务的情况下,对软件版本进行进行升级。


Apache Tomcat

Apache Tomcat是一个可作为web服务器的开源Java servlet容器。Java servlet是可扩展服务器特性的Java程序,虽然servlets可以对任何类型的请求作出响应,但是它还是最常用于Web服务器上的应用实施。这些web servlet在Java上的作用与PHP和ASP.NET等其它动态web技术类似。Tomcat的代码库是由Sun Microsystems公司在1999年捐赠给Apache软件基金会的,并在2005年成为Apache的顶级项目,目前有不到1%的网站在使用它。


Apache Tomcat是在Apache许可证 2.0 版的授权下进行发布的,通常用于运行Java应用程序。此外,它能够通过Coyote的扩展,扮演为本地文件HTTP文档服务的普通服务器的角色。更多详细的信息可以查看Apache Tomcat项目网站。


另外,Apache Tomcat还经常内嵌在其它开源Java应用服务器中,如JBoss, Wildfly和Glassfish。


Node.js

Node.js是一个用于web服务器等网络应用的服务器端JavaScript环境。由于其较小的市场定位,在所有网站中只有0.2%使用Node.js。Node.js最初是由Ryan Dahl在2009年编写的,现在Node.js项目由Node.js基金会进行管理,并在Linux基金会的合作项目计划下快速发展。


相比起其它流行的web服务器,Node.js的不同之处在于它是一个构建网络应用的跨平台运行环境,拥有可胜任异步I/0的事件驱动构架。这些设计选择能够优化应用程序的数据吞吐量和可伸缩性,支持实时通信和网页游戏。 Node.js 还强调了web开发堆栈上的差异,Node.js清楚地显示作为HTML、 CSS或者JavaScript堆栈的一部分,在这一点上与Apache或者NGINX同时作为多个不同软件堆栈的一部分的理念正好是相反的。


Node.js是在混合授权协议下发布的,更多信息可以查看该项目网站。


Lighttpd

Lighttpd,于2003年3月首次发布,目前全球有大约0.1%的网站在使用它,它是在BSD的许可协议下发布的。


Lighttpd以其低内存占用,低CPU负载和处理速度的优化而独立于世,它使用事件驱动架构,对大量并行连接进行优化,支持FastCGI, SCGI,Auth,Output-compression, URL-rewriting等多种功能。Lighttpd主要用于Catalyst和Ruby on Rails的web框架。通过项目主页,你可以找到它的更多信息。


Lighttpd是一个具有非常低的内存开销,cpu占用率低,效能好,以及丰富的模块等特点。lighttpd是众多OpenSource轻量级的web server中较为优秀的一个。支持FastCGI, CGI, Auth,输出压缩(output compress), URL重写, Alias等重要功能。


Lighttpd使用fastcgi方式运行php,它会使用很少的PHP进程响应很大的并发量。


Fastcgi的优点在于:


·        从稳定性上看, fastcgi是以独立的进程池运行来cgi,单独一个进程死掉,系统可以很轻易的丢弃,然后重新分配新的进程来运行逻辑.


·        从安全性上看, fastcgi和宿主的server完全独立, fastcgi怎么down也不会把server搞垮,


·        从性能上看, fastcgi把动态逻辑的处理从server中分离出来,大负荷的IO处理还是留给宿主server,这样宿主server可以一心一意作IO,对于一个普通的动态网页来说,逻辑处理可能只有一小部分, 大量的图片等静态IO处理完全不需要逻辑程序的参与


·        从扩展性上讲, fastcgi是一个中立的技术标准,完全可以支持任何语言写的处理程序(php,java,python...)

 

分享到:
评论

相关推荐

    WEB服务器、应用程序服务器、HTTP服务器区别

    IIS、Apache、Tomcat、Weblogic、WebSphere 都是不同的服务器, Apache 是纯粹的 Web 服务器,Tomcat 是一个 Servlet 和 JSP 容器,可以作为轻量级应用服务器,IIS 是一个兼具应用服务器功能的 Web 服务器,Weblogic...

    简单Web服务器设计与实现.doc

    "简单Web服务器设计与实现" 本文主要介绍了简单Web服务器的设计与实现,涵盖了WWW的工作原理、HTTP协议、Java语言、Web服务器的设计与实现等方面的知识点。 WWW的工作原理基于客户机/服务器计算模型,由Web浏览器...

    stm32+esp8266连web服务器

    stm32+esp8266连web服务器stm32+esp8266连web服务器stm32+esp8266连web服务器stm32+esp8266连web服务器stm32+esp8266连web服务器stm32+esp8266连web服务器stm32+esp8266连web服务器stm32+esp8266连web服务器stm32+...

    基于单片机的嵌入式Web服务器设计与实现.pdf

    基于单片机的嵌入式Web服务器设计与实现 本资源摘要信息主要介绍了基于单片机的嵌入式Web服务器的设计思想和方法。该设计思想和方法可以在单片机无操作系统的环境下实现嵌入式Web服务器,满足嵌入式系统的需求。 ...

    用java实现Web服务器

    java实现web服务器:(1) 连接:Web浏览器与Web服务器建立连接,打开一个称为socket(套接字)的虚拟文件,此文件的建立标志着连接建立成功。  (2) 请求:Web浏览器通过socket向Web服务器提交请求。HTTP的请求一般是...

    免费的绿色Web服务器,可以完全代替IIS,只有400多k,实用

    一个免费的绿色Web服务器,可以完全代替IIS,适用于任何版本的Windows系统,只有一个可执行文件。 复制aspsrv.exe到你网站的根目录(也就是IIS的主目录)下,运行aspsrv.exe,任务栏上会多出一个绿色图标。 现在...

    Python命令启动Web服务器实例详解

    Python命令启动Web服务器实例详解 利用Python自带的包可以建立简单的web服务器。在DOS里cd到准备做服务器根目录的路径下,输入命令: python -m Web服务器模块 [端口号,默认8000] 例如: python -m ...

    超微型WEB服务器免安装版

    是一款集合了2048游戏,电影搜索、成语接龙、进程守护、屏幕锁定解锁等功能的网页Web服务器,服务器文件64Kb(还包括30Kb GZIP dll)应该是最小的Web服务器,支持编写dll插件,服务器没有接口,启动后会出现托盘图标。...

    微型web服务器-单文件

    微型web服务器,就一个文件,方便搭建web服务,用于一般的web服务即可。需要的赶紧下载吧

    简单搭建WEB服务器 简单搭建WEB服务器 简单搭建WEB服务器

    简单搭建WEB服务器 简单搭建WEB服务器 简单搭建WEB服务器

    解决vs2012 “无法启动已配置的visual studio开发web服务器”的解决办法

    解决VS2012中“无法启动已配置的Visual Studio开发Web服务器”的解决办法 在Visual Studio 2012中,开发者可能会遇到“无法启动已配置的Visual Studio开发Web服务器”的错误,这是一个常见的问题。这个错误可能是...

    实验_Linux下的web服务器.doc

    实验_Linux下的web服务器.doc//实验_Linux下的web服务器.doc

    C++从零开始搭建一个web服务器

    Linux下基于C++的轻量级Web服务器; (1)使用 线程池 + 非阻塞socket + epoll(ET和LT均实现) + 事件处理(Reactor、Proactor) 的并发模型; (2)使用状态机解析HTTP请求报文,支持解析GET和POST请求; (3)访问...

    stm32搭建web服务器

    stm32搭建web服务器,修改于官方移植lwip搭建的web服务器 硬件基础:stm32f407 + lan9303

    Web服务器性能测试研究

    第二章 Web服务器概述 5 2.1 Web服务器的基本概念 5 2.2 HTTP协议的运作方式 6 2.2.1 HTTP协义基本介绍 6 2.2.2 HTTP 协议组成 7 2.2.3 TCP 对 HTTP的影响 9 2.3 Socket通信 10 2.4 Web服务器性能测试 11 2.5 影响...

    web服务器处理流程图

    web服务器处理流程图,

    Web服务器控件[借鉴].pdf

    Web 服务器控件详解 Web 服务器控件是 ASP.NET 框架中的一种新控件,它具有功能丰富的对象模型,该模型具有类型安全编程功能。下面是 Web 服务器控件的详细介绍: Web 服务器控件简述 Web 服务器控件具有以下特性...

    基于ARM平台的嵌入式WEB服务器的设计与实现

    "基于ARM平台的嵌入式WEB服务器的设计与实现" 本资源摘要信息将对基于ARM平台的嵌入式WEB服务器的设计与实现进行详细的知识点总结。 一、嵌入式WEB服务器的概念和应用 嵌入式WEB服务器是将传统的WEB服务器技术与...

    守望WEB服务器 v3.0

    这个WEB服务器是用C语言开发的 ,其特点是界面精美,易于使用,还有信息流量统计。整个WEB服务器就是 一个EXE可执行程序,无需任何安装,不修改注册表,删除时直接删除所有相关文件就行了。程序放在任何目录均可运行...

Global site tag (gtag.js) - Google Analytics