当你把资源放在公共的 Web服务器上时,因特网社区就可以使用它们了。这些资源可以是简单的文本文件或图像,也可以是复杂的实时导航地图或电子商务购物网关。能够将这些由不同组织拥有的种类繁多的资源便利地发布到网站上,并将其放置在能以合理价格提供很好性能的Web服务器上,是很关键的。
对内容资源的存储、协调以及管理的职责统称为Web主机托管。
18.1主机托管服务
在万维网的早期,每个组织自行购买自己的计算机硬件,搭建自己的计算机房,申请自己的网络连接,并管理自己的Web服务器软件。
随着Web迅速成为主流,每人都想要一个网站,但很少有人有能力或时间来搭建带空调的服务器机房,注册域名,或购买网络带宽。为了满足人们的迫切需求,出现了很多新的企业,提供了专业化管理的Web主机托管服务。服务级别有多种,从物理上的设备管理(提供空间、空调以及线缆)到完整的Web主机托管,顾客只需要提供内容就行了。
简单例子——专用托管
假设Joe的五金商店和 Mary的古董拍卖店都需要大容量的网站。Irene网络服务提供商那里有很多机架,机架上全是一样的高性能Web服务器,可以租给Joe和 Mary,
这样,他俩就不用自行购买自己的服务器并管理服务器软件了。
在图18-1中,Joe和Mary都签约使用Irene的网络服务提供商提供的专用Web托管服务。Joe租了专用的Web服务器,该服务器是 Irene网络服务提供商购买和维护的。Mary也从 Irene网络服务提供商那里租了另一个专用服务器。Irene网络服务提供商大批量地购买服务器硬件,它们选择的硬件经久耐用且相对便宜。如果Joe或Mary的网站变得更受欢迎,Irene网络服务提供商可以立刻给Joe或 Mary提供更多的服务器。
image.png
18.2虚拟主机托管
许多人想要在Web上展现自己,但他们的网站流量都不大。对这些人来说,使用专用的Web服务器可能有点儿大材小用,因为他们每月花费数百美元租来的服务器大部分时间都是空闲的!
许多Web托管者通过让一些顾客共享一台计算机来提供便宜的Web主机托管服务。这称为共享主机托管或虚拟主机托管。每个网站看起来是托管在不同的服务器上,但实际上是托管在同一个物理服务器上。从最终用户的角度来看,被虚拟托管的网站应当和托管在专用服务器上的网站没什么区别。
18.2.2 设法让虚拟主机托管正常工作
缺失的主机信息是原始HTTP规范的疏忽,它错误地假设了每个Web服务器上只托管了一个网站。HTTP 的设计者没有为进行虚拟主机托管的共享服务器提供支持。正因为如此,URL中的主机名信息被当作冗余信息剥离了,只要求发送路径部分。因为早期的规范没有考虑到虚拟主机托管,Web托管者需要开发变通的方案和约定来支持共享的虚拟主机托管。这个问题本可以通过要求所有HTTP请求报文发送完整的URL而不只是路径部分来简单地解决。而HTTP/1.1的确要求服务器能够处理HTTP报文请求行上的完整URL,但将现存的应用程序都升级到这个规范还需要很长时间。在此期间,涌现了以下4种技术。
·通过URL路径进行虚拟主机托管
在URL中增添专门的路径部分,以便服务器判断是哪个网站。通过端口号进行主机托管
为每个站点分配不同的端口号,这样请求就由Web服务器的单独实例来处理。
·通过IP地址进行主机托管
为不同的虚拟站点分配专门的IP地址,把这些地址都绑定到一台单独的机器上。这样,Web服务器就可以通过IP地址来识别网站名了。
·通过Host首部进行主机托管
很多Web托管者向HTTP的设计者施压,要求解决这个问题。HTTP/1.0的增强版和HTTP/1.1的正式版定义了Host请求首部来携带网站名称。Web服务器可以通过Host首部识别虚拟站点。
接下来详细介绍每种技术。
3.通过IP地址进行虚拟主机托管
一个更常用的、更好的方法是通过IP地址进行虚拟化。每个虚拟网站都分配一个或多个唯一的IP地址。所有虚拟网站的IP地址都绑定到同一个共享的服务器上。服务器可以查询HTTP连接的目的IP地址,并以此来判断客户端的目标网站。
18.3.1镜像的服务器集群
服务器集群是一排配置相同的Web服务器,互相可以替换。每个服务器上的内容可以通过镜像复制,这样当某个服务器出问题的时候,其他的可以顶上。
image.png
镜像 Web服务器可以在不同的地点包含同样内容的副本。图18-7展示了4个镜像服务器,其中主服务器在芝加哥,复制服务器在纽约、迈阿密和小石城。主服务器为芝加哥地区的客户端服务,并肩负把内容传播给复制服务器的任务。
image.pngCDN的全称是Content Delivery Network,即内容分发网络。
18.3.2内容分发网络
简单地说,内容分发网络(CDN)就是对特定内容进行分发的专门网络。这个网络中的节点可以是Web服务器、反向代理或缓存。
18.3.3CDN中的反向代理缓存
在图18-6和图18-7中,复制原始服务器可以用反向代理(也称为替代物)缓存来代替。反向代理缓存可以像镜像服务器一样接受服务器请求。它们代表原始服务器中的一个特定集合来接收服务器请求。(根据内容所在的IP地址的广告方式,这是有可能的,原始服务器和反向代理缓存之间通常有协作关系,到特定的原始服务器为请求就由反向代理缓存来接收。)
反向代理和镜像服务器之间的区别在于反向代理通常是需求驱动的。它们不会保存原始服务器的全部内容副本,它们只保存客户端请求的那部分内容。内容在其高速缓存中的分布情况取决于它们收到的请求,原始服务器不负责更新它们的内容。为了更容易地访问“热点”内容(就是高请求率的内容),有些反向代理具有“预取”待性,可以在用户请求之前就从服务器上载入内容。
CDN中带有反向代理时,可能会由于存在代理的层次关系而增加其复杂性。
网友评论