web服务器处理客户端请求客户端服务器模式简称为


web服务器处理客户端请求客户端服务器模式简称为

服务器会为每条连接分配一个线程/进程;但当服务器同时要处理成百、上千,甚至数以万计的连接时,需要的进程或线程数量可能会消耗太多的内存或系统资源。因此,很多多线程Web服务器都会对线程/进程的最大数量进行限制。

Web服务器都采用了复用结构。在复用结构中,要同时监视所有连接上的活动。当连接的状态发生变化时(比如,有数据可用,或出现错误时),就对那条连接进行少量的处理;处理结束之后,将连接返回到开放连接列表中,等待下一次状态变化。只有在有事情可做时才会对连接进行处理;在空闲连接上等待的时候并不会绑定线程和进程。

有些系统会将多线程和复用功能结合在一起,以利用计算机平台上的多个CPU。多个线程(通常是一个物理处理器)中的每一个都在观察打开的连接(或打开的连接中的一个子集),并对每条连接执行少量的任务

对请求报文进行解释,并采取行动,比如post可能提交了一些信息,服务器需要来处理这些信息

通常,Web服务器的文件系统中会有一个特殊的文件夹专门用于存放Web内容。这个文件夹被称为文档的根目录(documentroot,或docroot)。Web服务器从请求报文中获取URI,并将其附加在文档根目录的后面。很多web服务器都支持配置document在配置文件httpd.conf中添加一个DocumentRoot行就可以为ApacheWeb服务器设置文档的根目录了:DocumentRoot/usr/local/httpd/files

虚拟托管的Web服务器会在同一台Web服务器上提供多个Web站点;每个站点在服务器上都有自己独有的文档根目录。虚拟托管Web服务器会根据URI或Host首部的IP地址或主机名来识别要使用的正确文档根目录。通过这种方式,即使请求URI完全相同,托管在同一Web服务器上的两个Web站点也可以拥有完全不同的内容了。

大多数Web服务器都会去查找目录中一个名为index.html或index.htm的文件来代表此目录。如果用户请求的是一个目录的URL,而且这个目录中有一个名为index.html(或index.htm)的文件,服务器就会返回那个文件的内容。

Web服务器有时会返回重定向响应而不是成功的报文。Web服务器可以将浏览器重定向到其他地方来执行请求。重定向响应由返回码3XX说明。Location响应首部包含了内容的新地址或优选地址的URI。重定向可用于下列情况。

资源可能已经被移动到了新的位置,或者被重新命名,有了一个新的URL。态码301MovedPermanently就用于此类重定向。

如果资源被临时移走或重命名了,服务器可能希望将客户端重定向到新的位置上去。状态码303SeeOther以及状态码307TemporaryRedirect就用于此类重定向。

服务器通常用重定向来重写URL,往往用于嵌入上下文。当请求到达时,服务器会生成一个新的包含了嵌入式状态信息的URL,并将用户重定向到这个新的URL上去。[插图]客户端会跟随这个重定向信息,重新发起请求,但这次的请求会包含完整的、经过状态增强的URL。这是在事务间维护状态的一种有效方式。状态码303SeeOther和307TemporaryRedirect用于此类重定向。

如果一个超载的服务器收到一条请求,服务器可以将客户端重定向到一个负载不太重的服务器上去。状态码303SeeOther和307TemporaryRedirect可用于此类重定向。

最后,当事务结束时,Web服务器会在日志文件中添加一个条目,来描述已执行的事务。大多数Web服务器都提供了几种日志配置格式。