我们通过浏览器打开的网页都需要存储在web服务器上,是一台具有独立IP地址的计算机,它的主要功能是提供网上信息的浏览服务,可以向Internet上的客户机提供www、email和ftp等各种Internet服务。今天我们具体讲下什么是web服务器?与web应用服务器有哪些区别?
一、什么是web服务器?
Web服务器一般指网站服务器,是指Internet上某种类型的计算机程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件,让全世界浏览,也可以放置数据文件,让全世界下载。
Web服务器和HTTP服务器可以说是同一个东西,如果要细分的话,HTTP服务器是建立在HTTP协议之上的提供文档浏览的服务器,更多的是提供静态的文件。而Web服务器涵盖了HTTP服务器,Web服务器不仅能够存储信息,还能运行脚本和程序。
二、web服务器有哪些?
目前比较主流的三个Web服务器是Apache、Nginx、IIS。在选择使用web服务器应考虑的本身特性因素有:性能、安全性、日志和统计、虚拟主机、代理服务器、缓冲服务和集成应用程序等,下面介绍几种我们常用的WEB服务器。
1、Apache
Apache是世界使用排名第一的Web服务器软件。它几乎可以运行在所有的计算机平台上。由于Apache是开源免费的,因此有很多人参与到新功能的开发设计,不断对其进行完善。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。Apache刚开始被推出的时候有很多缺陷,如今已经被修复的越来越完善,如果你是web服务器的钻研者,建议一定要学习一下Apache的使用。
2、Nginx
Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,是Linux平台下的优秀Web服务器,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力,它让本来运行很慢的应用程序提升了很大的速度。
3、IIS
IIS(Internet信息服务)英文InternetInformationServer的缩写,它是微软公司主推针对Windows平台的服务器。IIS的特点具有:安全性,强大,灵活。它和NET语言非常的搭配,新手掌握起来也比较快。
4、Tomcat
Tomcat是很多Java学习者都非常熟悉的web服务器,是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat技术先进、性能稳定、有可视化的操作界面,也有命令语句,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。
三、Web服务器的工作原理
Web服务器的工作原理并不复杂,一般可分成如下4个步骤:连接过程、请求过程、应答过程以及关闭连接。
1、连接过程:Web服务器和其浏览器之间所建立起来的一种连接。查看连接过程是否实现,用户可以找到和打开socket这个虚拟文件,这个文件的建立意味着连接过程这一步骤已经成功建立。
2、请求过程:Web的浏览器运用socket这个文件向其服务器而提出各种请求。
3、应答过程:运用HTTP协议把在请求过程中所提出来的请求传输到Web的服务器,进而实施任务处理,然后运用HTTP协议把任务处理的结果传输到Web的浏览器,同时在Web的浏览器上面展示上述所请求之界面。
4、关闭连接:当上一个步骤--应答过程完成以后,Web服务器和其浏览器之间断开连接之过程。
Web服务器上述4个步骤环环相扣、紧密相联,逻辑性比较强,可以支持多个进程、多个线程以及多进程、线程相混合的技术,详细请看上图。
四、Web服务器与Web应用服务器的区别
在大多数时候,Web服务器和Web应用服务器这两个术语是可以互换使用的。但从严格意义上讲Web服务器只负责处理HTTP协议,只能发送静态页面的内容。而JSP,ASP,PHP等动态内容需要通过CGI、FastCGI、ISAPI等接口交给其他程序去处理,这个其他程序就是应用服务器。比如Web服务器包括Nginx,Apache,IIS等。而应用服务器包括WebLogic,JBoss等。应用服务器一般也支持HTTP协议,因此界限没这么清晰。但是应用服务器的HTTP协议部分仅仅是支持,一般不会做特别优化,所以很少有见Tomcat直接暴露给外面,而是和Nginx、Apache等配合,只让Tomcat处理JSP和Servlet部分。
大多数Web应用服务器都将Web服务器作为不可分割的一部分,这意味着Web应用服务器可以做任何Web服务器所能做的事情。此外,Web应用服务器有组件和特性来支持应用级服务,如连接池、对象池、事务支持、消息传递服务等。
由于web服务器非常适合用于提供静态内容,而应用服务器适合提供动态内容,因此大多数生产环境都有web服务器充当Web应用服务器的反向代理。这意味着在页面请求时,web服务器会通过提供静态内容(例如图像/静态HTML)来解释请求,并且它还会使用某种过滤技术(主要是请求资源的扩展)识别动态内容请求,并透明地转发到应用服务器。