`

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...

    基于QT的轻量级web服务器

    【基于QT的轻量级web服务器】是一种在Linux环境下运行的、使用QT库开发的简易Web服务器。QT是一个跨平台的C++图形用户界面应用程序开发框架,它为开发者提供了丰富的API,使得构建桌面和移动应用变得更为便捷。在这...

    微型web服务器-单文件

    标题中的"微型web服务器-单文件"指出,这个软件仅由一个文件组成,这意味着它可能是一个高度精简的实现,无需复杂的安装过程,只需执行即可开始服务。 描述中提到,该服务器适用于“一般的web服务”,这可能意味着...

    实验_Linux下的web服务器.doc

    本实验旨在让参与者了解和掌握如何在 Linux 系统中搭建和管理Web服务器,包括基本的Web服务器配置以及虚拟主机的设置,以便能实现多站点托管和服务。 【实验准备】 1. Linux操作系统(例如Linux 9.0) 2. Windows...

    超级简单的web服务器

    【超级简单的Web服务器】 在IT领域,Web服务器是运行在计算机上的一种软件,它能够接收HTTP(超文本传输协议)请求,并返回相应的HTML页面或其他Web内容。这些服务器为我们提供了访问互联网上的网页和其他资源的...

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

    本文将详细介绍如何简单搭建一个WEB服务器,包括基础概念、所需工具及步骤,旨在帮助初学者快速入门。 一、Web服务器的基础概念 1. HTTP:HTTP是互联网上应用最为广泛的一种网络协议,用于从万维网服务器传输超文本...

    一个简单的web服务器编程实例

    本实例将带你走进Web服务器编程的世界,通过一个简单的实例来理解其工作原理。 首先,我们要了解Web服务器的基本概念。Web服务器主要任务是接收来自客户端(如浏览器)的HTTP请求,解析请求中的信息,如URL、HTTP...

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

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

    miniweb服务器一键搭建静态网站

    标题中的"miniweb服务器一键搭建静态网站"表明我们要讨论的是一个小型、简易的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服务器源码.rar

    【标题】"易语言简易WEB服务器源码.rar" 指的是一款基于易语言开发的简单Web服务器的源代码资源。易语言是中国本土设计的一种编程语言,它以其独特的汉字编程方式,降低了编程的门槛,使得非计算机专业人员也能快速...

    WEB服务器的建立

    在本实验中,主要使用的是基于IIS(Internet Information Services)的WEB服务器建立方法。IIS是微软提供的一个集成了多种互联网服务的平台,包括Web服务器、FTP服务器、SMTP服务器等。 【实验目的】旨在让学习者...

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

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

    Windows server 2022 web服务器的搭建

    Windows Server 2022 Web 服务器的搭建 Windows Server 2022 是 Microsoft 公司推出的最新一代服务器操作系统,具有非常强的安全性、可靠性和可扩展性。作为一名 IT 专业人士,了解如何搭建和配置 Windows Server ...

    stm32搭建web服务器

    在本文中,我们将探讨如何利用STM32F407微控制器和LWIP(Lightweight IP)库来搭建一个简单的Web服务器,并通过LAN9303以太网控制器连接网络。 首先,LWIP是一个开源、轻量级的TCP/IP协议栈,适用于资源有限的...

    STM32实现Web服务器

    STM32实现Web服务器是一个将微控制器技术与网络通信相结合的课题,对于嵌入式系统开发者来说具有重要的学习价值。STM32是意法半导体公司推出的一款基于ARM Cortex-M内核的微控制器系列,广泛应用于各种嵌入式系统...

    VB6.0编写的简易WEB服务器

    VB6.0编写的简易WEB服务器是一个非常适合初学者入门网络编程的项目。VB6.0(Visual Basic 6.0)是微软推出的一种可视化编程工具,以其易学易用的特性,深受程序员喜爱。在这个项目中,我们将探讨如何利用VB6.0构建一...

    c#简单web服务器开发实例

    在本文中,我们将深入探讨如何使用C#语言开发一个简单的Web服务器,主要基于`HttpListener`组件。`HttpListener`是.NET Framework提供的一种基础网络通信类,它允许我们监听HTTP请求,并对这些请求做出响应。 首先...

    (linux下C语言实现)简易web服务器

    2. **多路复用I/O**:为了处理多个并发客户端请求,Web服务器通常会采用多路复用I/O模型,如`select()`, `poll()`或`epoll()`。这些函数可以让服务器监控多个套接字,一旦有任何活动,就可以立即响应,提高服务器的...

Global site tag (gtag.js) - Google Analytics