第5章 Web服务器

1、Web服务器有不同的形式:可以在计算机系统上安装并运行通用的软件Web服务器;一台Web服务器设备;或是在少量计算机芯片上实现嵌入式Web服务器。


2、第一步——接收客户端连接

客户端请求一条到Web服务器的TCP连接时,Web服务器会建立连接,判断连接的另一端是哪个客户端,从TCP连接中将IP地址解析出来。


3、第二步——接收请求报文

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

单线程的Web服务器以此只处理一个请求,直到其完成为止。可以采用多线程的Web服务器或是复用I/O的服务器。在复用结构中,要同时监视所有连接上的活动。当连接的状态发生变化时,就对那条连接进行少量的处理;处理结束后,将连接返回到开放连接列表中,等待下一次状态变化。可以将多线程和复用I/O结合起来。


4、第三步——处理请求

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


5、第四步——对资源的映射及访问

Web服务器是资源服务器。它们负责发送预先创建好的内容。通常,Web服务器的文件系统中会有一个特殊的文件夹专门用于存放Web内容,这个文件夹被称为文档的根目录。Web服务器从请求报文中获取URI,并将其附加在文档根目录的后面。服务器要注意,不能让相对URL退到根目录之外,将文件系统的其余部分暴露出来。。

虚拟托管的Web服务器会在同一台Web服务器上提供多个Web站点,每个站点在服务器上都有自己独有的文档根目录。

根目录的另一种常见应用是在Web服务器上为人们提供私有的Web站点。

Web服务器可以接收对目录URL的请求,其路径可以解析为一个目录,而不是文件。大多数Web服务器都会去查找目录中一个名为index.html的文件来代表此目录。如果用户请求目录URI时,没有提供默认的索引文件,而且没有禁止使用目录索引,很多Web服务器都会自动返回一个HTML文件,此文件中会列出那个目录里的文件名,以及每个文件的大小和修改日期,还包括到每个文件的URI连接。

Apache允许用户将URI路径名组件映射为可执行文件目录。服务器收到一条带有可执行路径组件的对URI的请求时,会试着去执行相应服务器目录中的程序。


6、第五步——构建响应

6.1、MIME类型

Web服务器要负责确定响应主体的MIME类型,有很多方法可以将MIME类型与资源关联起来。

Web服务器可用文件的扩展名来说明MIME类型;Apache Web服务器可以扫描每个资源的内容,并将其与一个已知模式表进行匹配,以决定每个文件的MIME类型;可以对Web服务器进行配置,使其不考虑文件的扩展名和内容,强制特定文件或目录内容拥有某个MIME类型;有些Web服务器经过配置,可以以多种文档格式来存储资源,这时可以使其通过与用户的协商来决定使用哪种最好。


7、第六步——发送响应

服务器要记录连接的状态,还要特别注意对持久连接的处理。对非持久连接而言,服务器应该在发送了整条报文之后,关闭自己这一端的连接。


8、第七步——记录日志

当事务结束时,Web服务器会在日志文件中添加一个条目,来描述已执行的事务。

本文出自 “莲的思念” 博客,请务必保留此出处http://liandesinian.blog.51cto.com/7737219/1557913

郑重声明:本站内容如果来自互联网及其他传播媒体,其版权均属原媒体及文章作者所有。转载目的在于传递更多信息及用于网络分享,并不代表本站赞同其观点和对其真实性负责,也不构成任何其他建议。