1.2 认识Web服务器
Web服务器概念较为广泛,最常说的Web服务器指的是网站服务器,它是建立在因特网之上并且驻留在某种计算机上的程序。Web服务器可以向Web客户端(如浏览器)提供文档或其他服务。
1.2.1 什么是Web服务器
Web服务器一般指网站服务器,是指驻留于因特网上某种类型计算机的程序,可以向浏览器等Web客户端提供文档,也可以放置网站文件让全世界浏览;还可以放置数据文件让全世界下载。目前主流的三个Web服务器是Apache、Nginx和IIS。
Web服务器也称为WWW(World Wide Web)服务器,主要功能是提供网上信息浏览的服务。WWW是因特网的多媒体信息查询工具,是因特网近年才发展起来的服务,也是发展最快和目前应用最广泛的服务。因为有了WWW工具,才使得近年来因特网迅速发展,且用户数量飞速增长。
1.2.2 Web服务器原理简介
各种Web服务器的实现细节都不同,是为了某种情形而设计开发的。但是它们的基础工作原理是相同的,一般可分成如下4个步骤:连接过程、请求过程、应答过程以及关闭连接。下面对这4个步骤一一介绍。
(1)连接过程就是Web服务器和其浏览器之间所建立起来的一种连接。查看连接过程是否实现,用户可以找到和打开socket这个虚拟文件,这个文件的建立意味着连接过程已经成功建立。
(2)请求过程就是Web浏览器运用socket文件向服务器提出各种请求。
(3)应答过程就是运用HTTP把在请求过程中所提出来的请求传输到Web的服务器,进而实施任务处理,然后运用HTTP把任务处理的结果传输到Web浏览器,同时在Web浏览器上展示上述所请求的界面。
(4)关闭连接就是当应答过程完成以后,Web服务器和浏览器之间断开连接的过程。
这4个步骤环环相扣、紧密相连,逻辑性比较强,可以支持多个进程、多个线程以及多个进程与多个线程相混合的技术。
图1-1 Web服务的工作流程
图1-1所示是一次Web服务的工作流程,每个流程的介绍如下:
(1)用户做出一个操作,如填写网址,单击链接,接着浏览器获取该事件。
(2)浏览器与对端服务程序建立TCP连接。
(3)浏览器将用户的事件按照HTTP格式打包成一个数据包,其实质就是在待发送缓冲区中的一段有着HTTP格式的字节流。
(4)浏览器确认对端可写,并将该数据包推入因特网,该包经过网络最终递交到对端服务程序。
(5)服务端程序拿到该数据包后,同样以HTTP格式解包,然后解析客户端的意图。
(6)得知客户端意图后,进行分类处理,或是提供某种文件,或是处理数据。
(7)将结果装入缓冲区,或是HTML文件,或是一张图片等。
(8)按照HTTP格式将(7)中的数据打包。
(9)服务器确认对端可写,并将该数据包推入因特网,该包经过网络最终递交到客户端。
(10)浏览器拿到包后,以HTTP格式解包,然后解析数据,假设是HTML文件。
(11)浏览器将HTML文件展示在页面。
1.2.3 常用的Web服务器
Web服务器也称为WWW服务器、HTTP服务器,其主要功能是提供网上信息浏览服务。在选择使用Web服务器时应考虑的特性因素有性能、安全性、日志和统计、虚拟主机、代理服务器、缓冲服务和集成应用程序等。下面介绍常用的Web服务器。
1. Apache
Apache是世界上应用最多的Web服务器,优势主要在于源代码开放、支持跨平台应用以及其可移植性等。虽然Apache的模块支持非常丰富,但在速度和性能上不及其他轻量级Web服务器,所消耗的内存也比其他Web服务器要高。因为它是自由软件,所以不断有人来为它开发新的功能、新的特性、修改原来的缺陷。
2. IIS
IIS是Internet Information Server的缩写,就是“Internet信息服务”的意思,它是微软公司主推的服务器,允许在公共Intranet或因特网上发布信息的Web服务器,包括Web服务器、FTP服务器、NNTP服务器和SMTP服务器,分别用于网页浏览、文件传输、新闻服务和邮件发送等方面。IIS使得在网络上发布信息成了一件很容易的事情。它提供ISAPI作为扩展Web服务器功能的编程接口,同时还提供因特网,可以实现对数据库的查询和更新。
3. Nginx
Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程,可以极大提高Rails应用的并发能力。