第五章:Web服务器,第1张

51各种形状和尺寸的Web服务器

Web服务器会对HTTP请求进行处理并提供响应。术语“Web服务器”可以用来表示Web服务器的软件,也可以用来表示提供Web页面的特定设备或计算机。

Web服务器有着不同的风格、形状和尺寸。有普通的10行Perl脚本的Web服务器、50MB的安全商用引擎以及极小的卡上服务器。但不管功能有何差异,所有的 Web服务器都能够接收请求资源的 HTTP请求,将内容回送给客户端(参见图1-5)。

511Web服务器的实现

Web服务器实现了HTTP和相关的TCP连接处理。负责管理Web服务器提供的资源,以及对Web服务器的配置、控制及扩展方面的管理。

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

53实际的Web服务器会做些什么

例5-1显示的 Perl服务器是一个Web服务器的小例子。最先进的商用Web服务器要比它复杂得多,但它们确实执行了几项同样的任务,如图5-3所示。

(1)建立连接一—接受一个客户端连接,或者如果不希望与这个客户端建立连接,就

将其关闭。

(2)接收请求——从网络中读取一条HTTP请求报文。(3)处理请求——对请求报文进行解释,并采取行动。(4)访问资源-———访问报文中指定的资源。

(5)构建响应——创建带有正确首部的 HTTP响应报文。(6)发送响应——将响应回送给客户端。

(7)记录事务处理过程—-将与已完成事务有关的内容记录在一个日志文件中。

54第一步——接受客户端连接

如果客户端已经打开了一条到服务器的持久连接,可以使用那条连接来发送它的请求。否则,客户端需要打开一条新的到服务器的连接(回顾第4章,复习一下HTTP的连接管理技术)。

541处理新连接

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

并被接受,服务器就会将新连接添加到其现存Web服务器连接列表中,做好监视连接上数据传输的准备。

Web服务器可以随意拒绝或立即关闭任意一条连接。有些Web服务器会因为客户端IP地址或主机名是未认证的,或者因为它是已知的恶意客户端而关闭连接。Web服务器也可以使用其他识别技术。

542客户端主机名识别

可以用“反向 DNS”对大部分Web服务器进行配置,以便将客户端IP地址转换成客户端主机名。Web服务器可以将客户端主机名用于详细的访问控制和日志记录。但要注意的是,主机名查找可能会花费很长时间,这样会降低Web事务处理的速度。很多大容量Web服务器要么会禁止主机名解析,要么只允许对特定内容进行解析。

可以用配置指令HostnameLookups启用Apache的主机查找功能。比如,例5-2中的Apache配置指令就只打开了HTML和CGI资源的主机名解析功能。

例5-2配置Apache,为 HTML和CGI资源查找主机名

HostnameLookups off

<Files ~" - 《html |htmlcgi)$">

HostnameLookups on

</Files>

55第二步—接收请求报文

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

解析请求报文时,Web服务器会:

·解析请求行,查找请求方法、指定的资源标识符(URI)以及版本号,3各项之

间由一个空格分隔,并以一个回车换行(CRLF)序列作为行的结束,“

·读取以CRLF结尾的报文首部;

检测到以CRLF结尾的、标识首部结束的空行(如果有的话)﹔

·如果有的话(长度由content-Length首部指定),读取请求主体。

解析请求报文时,Web服务器会不定期地从网络上接收输入数据。网络连接可能随时都会出现延迟。Web服务器需要从网络中读取数据,将部分报文数据临时存储在内存中,直到收到足以进行解析的数据并理解其意义为止。

551 报文的内部表示法

有些Web服务器还会用便于进行报文操作的内部数据结构来存储请求报文。比如,数据结构中可能包含有指向请求报文中各个片段的指针及其长度,这样就可以将这些首部存放在一个快速查询表中,以便快速访问特定首部的具体值了(参见图5-6)。

552连接的输入/输出处理结构

高性能的 Web服务器能够同时支持数千条连接。这些连接使得服务器可以与世界各地的客户端进行通信,每个客户端都向服务器打开了一条或多条连接。某些连接可能在快速地向Web服务器发送请求,而其他一些连接则可能在慢慢发送,或者不经常发送请求,还有一些可能是空闲的,安静地等待着将来可能出现的动作。

因为请求可能会在任意时刻到达,所以Web服务器会不停地观察有无新的Web请求。不同的Web服务器结构会以不同的方式为请求服务,如图5-7所示。

·单线程Web服务器(参见图5-7a)

单线程的Web服务器一次只处理一个请求,直到其完成为止。一个事务处理结束之后,才去处理下一条连接。这种结构易于实现,但在处理过程中,所有其他连接都会被忽略。这样会造成严重的性能问题,只适用于低负荷的服务器,以及type-o-serve这样的诊断工具。

·多进程及多线程Web服务器(参见图5-7b)

多进程和多线程Web服务器用多个进程,或更高效的线程同时对请求进行处理。3可以根据需要创建,或者预先创建一些线程/进程。°有些服务器会为每条连接分配一个线程/进程,但当服务器同时要处理成百、上千,甚至数以万计的连接时,需要的进程或线程数量可能会消耗太多的内存或系统资源。因此,很多多线程Web服务器都会对线程/进程的最大数量进行限制。

·复用I/O的服务器(参见图5-7c)

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

·复用的多线程Web服务器(参见图5-7d)

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

56第三步———处理请求

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

有些方法(比如POST)要求请求报文中必须带有实体主体部分的数据。其他一些方法(比如OPTIONS)允许有请求的主体部分,也允许没有。少数方法(比如GET)禁止在请求报文中包含实体的主体数据。

这里我们并不对请求的具体处理方式进行讨论,因为本书其余大多数章节都在讨论这个问题。

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

Web 服务器是资源服务器。它们负责发送预先创建好的内容,比如HTML页面或JPEG ,以及运行在服务器上的资源生成程序所产生的动态内容。

571 docroot

Web服务器支持各种不同类型的资源映射,但最简单的资源映射形式就是用请求URI作为名字来访问Web服务器文件系统中的文件。通常,Web服务器的文件系统中会有一个特殊的文件夹专门用于存放Web内容。这个文件夹被称为文档的根目录(document root,或docroot)。Web服务器从请求报文中获取URI,并将其附加在文档根目录的后面。

在图5-8中,有一条对/specials/saw-bladegif 的请求到达。这个例子中Web服务器的文档根目录为/us/local/httpd/files。Web服务器会返回文件/usr/local/httpd/files/specials/saw-bladegif。

在配置文件httpdconf中添加一个 DocumentRoot行就可以为Apache Web服务器设置文档的根目录了:

DocumentRoot /usr/ local/httpd/files

服务器要注意,不能让相对URL退到docroot之外,将文件系统的其余部分暴露出来。比如,大多数成熟的Web服务器都不允许这样的URI看到Joe的五金商店文档根目录上一级的文件:

http://wwwjoes-hardwarecom/

583重定向

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

·永久删除的资源

资源可能已经被移动到了新的位置,或者被重新命名,有了一个新的URL。Web服务器可以告诉客户端资源已经被重命名了,这样客户端就可以在从新地址获取资源之前,更新书签之类的信息了。状态码301 Moved Permanently就用于此类重定向。·临时删除的资源

如果资源被临时移走或重命名了,服务器可能希望将客户端重定向到新的位置上去。但由于重命名是临时的,所以服务器希望客户端将来还可以回头去使用老的URL,不要对书签进行更新。状态码303 See Other以及状态码307 TemporaryRedirect就用于此类重定向。

Windows XP 常见的进程列表

最基本的系统进程(也就是说,这些进程是系统运行的基本条件,有了这些进程,系统

就能正常运行)

smssexe Session Manager

csrssexe 子系统服务器进程

winlogonexe 管理用户登录

servicesexe 包含很多系统服务

lsassexe 管理 IP 安全策略以及启动 ISAKMP/Oakley (IKE) 和 IP 安全驱动程序。

(系统服务)

产生会话密钥以及授予用于交互式客户/服务器验证的服务凭据(ticket)。(系统服务)

svchostexe 包含很多系统服务

svchostexe

SPOOLSVEXE 将文件加载到内存中以便迟后打印。(系统服务)

explorerexe 资源管理器

internatexe 托盘区的拼音图标

附加的系统进程(这些进程不是必要的,你可以根据需要通过服务管理器来增加或减

少)

mstaskexe 允许程序在指定时间运行。(系统服务)

regsvcexe 允许远程注册表操作。(系统服务)

winmgmtexe 提供系统管理信息(系统服务)。

inetinfoexe 通过 Internet 信息服务的管理单元提供 FTP 连接和管理。(系统服务)

tlntsvrexe 允许远程用户登录到系统并且使用命令行运行控制台程序。(系统服务)

允许通过 Internet 信息服务的管理单元管理 Web 和 FTP 服务。(系统服务)

tftpdexe 实现 TFTP Internet 标准。该标准不要求用户名和密码。远程安装服务

的一部分。(系统服务)

termsrvexe 提供多会话环境允许客户端设备访问虚拟的 Windows 2000

Professional 桌面会话以及运行在服务器上的基于 Windows 的程序。(系统服务)

dnsexe 应答对域名系统(DNS)名称的查询和更新请求。(系统服务)

以下服务很少会用到,上面的服务都对安全有害,如果不是必要的应该关掉

tcpsvcsexe 提供在 PXE 可远程启动客户计算机上远程安装 Windows 2000

Professional 的能力。(系统服务)

支持以下 TCP/IP 服务:Character Generator, Daytime, Discard, Echo, 以及

Quote of the Day。(系统服务)

ismservexe 允许在 Windows Advanced Server 站点间发送和接收消息。(系统服

务)

upsexe 管理连接到计算机的不间断电源(UPS)。(系统服务)

winsexe 为注册和解析 NetBIOS 型名称的 TCP/IP 客户提供 NetBIOS 名称服务。

(系统服务)

llssrvexe License Logging Service(system service)

ntfrsexe 在多个服务器间维护文件目录内容的文件同步。(系统服务)

RsSubexe 控制用来远程储存数据的媒体。(系统服务)

locatorexe 管理 RPC 名称服务数据库。(系统服务)

lserverexe 注册客户端许可证。(系统服务)

dfssvcexe 管理分布于局域网或广域网的逻辑卷。(系统服务)

clipsrvexe 支持“剪贴簿查看器”,以便可以从远程剪贴簿查阅剪贴页面。(系统

服务)

msdtcexe 并列事务,是分布于两个以上的数据库,消息队列,文件系统,或其

它事务保护资源管理器。(系统服务)

faxsvcexe 帮助您发送和接收传真。(系统服务)

cisvcexe Indexing Service(system service)

dmadminexe 磁盘管理请求的系统管理服务。(系统服务)

mnmsrvcexe 允许有权限的用户使用 NetMeeting 远程访问 Windows 桌面。(系统服

务)

netddeexe 提供动态数据交换 (DDE) 的网络传输和安全特性。(系统服务)

smlogsvcexe 配置性能日志和警报。(系统服务)

rsvpexe 为依赖质量服务(QoS)的程序和控制应用程序提供网络信号和本地通信控制

安装功能。(系统服务)

RsEngexe 协调用来储存不常用数据的服务和管理工具。(系统服务)

RsFsaexe 管理远程储存的文件的操作。(系统服务)

grovelexe 扫描零备份存储(SIS)卷上的重复文件,并且将重复文件指向一个数据存

储点,以节省磁盘空间。(系统服务)

SCardSvrexe 对插入在计算机智能卡阅读器中的智能卡进行管理和访问控制。(系统

服务)

snmpexe 包含代理程序可以监视网络设备的活动并且向网络控制台工作站汇报。(系

统服务)

snmptrapexe 接收由本地或远程 SNMP 代理程序产生的陷阱消息,然后将消息传递

到运行在这台计算机上 SNMP 管理程序。(系统服务)

UtilManexe 从一个窗口中启动和配置辅助工具。(系统服务)

msiexecexe 依据 MSI 文件中包含的命令来安装、修复以及删除软件。(系统服务)

1IIS

IIS(Internet信息服务)英文InternetInformationServer的缩写。它是微软公司主推的服务器。IIS的特点具有:安全性,强大,灵活。

2Tomcat

Tomcat是Apache软件基金会(ApacheSoftwareFoundation)的Jakarta项目中的一个核心项目,由Apache、Sun和其他一些公司及个人共同开发而成。Tomcat技术先进、性能稳定,而且免费,因而深受Java爱好者的喜爱并得到了部分软件开发商的认可,成为目前比较流行的Web应用服务器。

3Zeus

Zeus是一个运行于Unix下的非常优秀的Web服务器,据说性能超过Apache,是效率最高的Web服务器之一。

4Nginx

Nginx不仅是一个小巧且高效的HTTP服务器,也可以做一个高效的负载均衡反向代理,通过它接受用户的请求并分发到多个Mongrel进程可以极大提高Rails应用的并发能力。

5Apache

Apache是世界使用排名第一的Web服务器软件。它几乎可以运行在所有的计算机平台上。由于Apache是开源免费的,因此有很多人参与到新功能的开发设计,不断对其进行完善。Apache的特点是简单、速度快、性能稳定,并可做代理服务器来使用。

6Lighttpd

Lighttpd是由德国人JanKneschke领导开发的,基于BSD许可的开源WEB服务器软件,其根本的目的是提供一个专门针对高性能网站,安全、快速、兼容性好并且灵活的webserver环境。具有非常低的内存开销,CPU占用率低,效能好,以及丰富的模块等特点。支持FastCGI,CGI,Auth,输出压缩(outputcompress),URL重写,Alias等重要功能。

DABAN RP主题是一个优秀的主题,极致后台体验,无插件,集成会员系统
网站模板库 » 第五章:Web服务器

0条评论

发表评论

提供最优质的资源集合

立即查看 了解详情