http权威指南第五章

2016-09-12  本文已影响41人  shenyifu

web服务器

5.1各种形状和尺寸的web服务器

web服务器会对http请求处理并提供响应。可以是web服务器的软件,也可以是提供web页面的特定设备或计算机。

5.1.1web服务器的实现

web服务器实现了http和相应的tcp连接处理。负责web服务器提供的资源,以及web服务器的配置、控制及扩展方面的管理。

web服务器逻辑实现了http协议,管理着web资源,并负责,提供web服务器的管理功能。web服务器逻辑和操作系统共同负责管理tcp连接。底层操作系统负责管理计算机系统的硬件细节,并提供tcp网络的支持、负责装载wev资源的文件系统以及控制当前计算活动的进程管理功能。

web服务器的不同形式

5.1.2通用软件web服务器

通用软件web服务器都运行在标准的、有网络功能的计算机系统上。其中apache占据了60%的市场

5.1.3web服务器设备

web服务器设备(web server appliance)是预先打包好的软硬件解决方案。厂商会在他们的计算机平台上预先安装好软件服务器,并将软件配置好。

5.1.4嵌入式web服务器

嵌入式服务器(enbeded server)是要嵌入到消费类产品中的小型web服务器。有些嵌入式web服务器可以在小于一平方英寸的空间内实现。

5.2最小的perl web服务器。

...

5.3实际的web服务器会做些什么

  1. 建立连接-接受客户端的连接,或者如果不希望建立就关闭连接。
  2. 接受请求-从网络中读取一条http请求报文
  3. 处理请求-对请求方存文进行解释,并采取行动
  4. 访问资源-访问报文中指定的资源
  5. 构建响应-创建带有正确首部的http响应报文
  6. 发送响应-将响应回送给客户端
  7. 记录事务处理过程-将已完成的事务记录在一个日志中

5.4第一步-接受客户端连接

如果客户端已经打开了一条到服务器的持久连接,可以使用那条连接发送请求。否则客户端要打开一条新的到服务器的连接。

5.4.1处理新连接

客户端请求一条到web服务器的tcp连接时,web服务器会建立连接,判断另一端是那个客户端,从tcp连接中将ip地址解析出来。一旦连接建立起来并被接受,服务器就会将新的连接添加到现存的web服务器连接列表中,做好监视连接上数据传输的准备。

web服务器可以拒绝,或关闭任意一条连接。

5.4.2客户端主机名识别

可以用反向dns对大部分web服务器进行配置,以便将客户端ip转换为客户端主机名。web服务器可以将客户端主机名用于详细的访问控制和日志记录。主机名查找可能会花费很长时间,这样会减低web服务器事务处理的速度,大容量服务器会禁止主机名解析,或只允许对特定内容进行解析。

5.4.3通过ident确定客户端用户

有些web服务器支持ietf的ident协议。服务器通过ident协议发http连接的用户名。这些信息端web服务器的日志记录特别有用-流行的通用日志格式(common log format)的第二个字段中就包含了每条http请求的ident用户名。

ident可以在组织内部很好的工作,但在公共网络不能很好的工作,原因如下:

5.5第二步-接受请求报文

连接上有数据到达时,web服务器会从网络中读取数据,并将请求报文的内容解析出来。

解析请求报文,web服务器从网络上接受输入数据,网络连接可能随时出现延迟。web服务器从网络中读取数据,将部分办新闻数据临时存储在内存中,直到收到足以进行解析的数据并理解其意义为止。

5.5.1报文的内部表示法

有些web服务器会用便于进行报文操作的内部数据结构来存储请求报文。这样可以快速访问特定的首部。

5.5.2连接的输入输出处理结构

不同的web服务器会以不同的方式为请求服务

5.6第三步-处理请求

一旦服务器收到请求就可以根据方法、资源、首部、可选主体进行处理了。

第四步-对资源的映射及访问

web服务器是资源服务器,他们发送预先创建好的内容,比如html或则动态生成的资源。在服务器将内容传送给客户端之前,要将请求报文的url映射为服务器的内同或内容生成器,以识别内容的源头。

5.7.1docroot

web服务器支持不同类型的资源映射,最简单的资源映射形式就是用请求url作为名字访问服务器的文件系统的文件。通常服务器有一个特殊的文件夹存放web内容,称为文档根目录(document root或docroot)

1.虚拟托管的docroot

虚拟托管的服务器会在同一台web服务器上提供多个web站点,每个站点在服务器上都有自己的文档根目录,虚拟服务器根据url或host首部的ip地址或主机名识别要使用的正确文档根目录。

1.用户主目录docroot

docroot的另一个常见应用是在web服务器上为人们提供私有的web站点。通常会把以/~开始,后面跟着用户名的url映射为私有文档根目录。

5.7.2目录列表

web服务器可以接受yui个对目录url的请求,其路径可以解析为一个目录,而不是文件。可以对服务器配置,使请求目录时采取不同动作。

5.7.3动态内容资源的映射

web服务器可以将url映射为动态资源。实际上,有一大类名为应用程序服务器的web服务器会将服务器连接到复杂的后端程序。

5.7.4服务器端包含项

很多服务器还提供了对服务器端包含项(ssi)的支持。如果某个资源被标志为存在服务器端包含项,服务器就回在发送给客户端之前对其资源内容进行处理。要对内容进行扫描。以查找特定的模板,取代特定的模板。这是创建动态内容的简便方式。

5.5.7访问控制

web服务器可以为特定的资源进行访问控制。比如客户端的ip或者要求提供密码。

5.8第五步-构建响应

一旦服务器识别了资源,就执行请求方法描述的动作,并返回响应报文。

5.8.1响应实体

如果事务处理产生了响应主体就将内容放在响应报文中送过去。如果有响应主体,响应报文通常包括:

5.8.2mime类型

服务器负责确定响应主体的mime类型

5.8.3重定向

服务器有时会返回重定向响应而不是成功的报文。重定向响应由返回码3xx说明。location响应首部包含了内容的新地址。重定向用于以下情况

5.9第六步-发送响应

web服务器通过连接发送数据有时也会面临与接受数据一样的问题。服务器可能有很多到客户端的连接。服务器要记录连接状态,还要特别注意持久连接的处理,要特别小心的计算content-length首部,不然客户端就不知道响应什么时候结束了。

5.10第七步-记录日志

当事务结束,web服务器会在日志系统添加一个条目,来描述已执行的事务。

上一篇下一篇

猜你喜欢

热点阅读