5月阅读周·HTTP权威指南:Web主机托管之虚拟主机托管篇
引言
HTTP(Hypertext Transfer Protocol,超文本传输协议)是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。
《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。此外,这本书还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。
这本书主要包括以下内容:
- 第一部分描述了Web的基础构件与HTTP的核心技术
- 第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。
- 第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
- 第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。
- 第五部分介绍了发布和传播Web内容的技巧。
- 第六部分是一些很有用的参考附录,以及相关技术的教程。
Web主机托管
当你把资源放在公共的Web服务器上时,因特网社区就可以使用它们了。这些资源可以是简单的文本文件或图像,也可以是复杂的实时导航地图或电子商务购物网关。能够将这些由不同组织拥有的种类繁多的资源便利地发布到网站上,并将其放置在能以合理价格提供很好性能的Web服务器上,是很关键的。
对内容资源的存储、协调以及管理的职责统称为Web主机托管。主机托管是Web服务器的主要功能之一。保存并提供内容,记录对内容的访问以及管理内容都离不开服务器。如果不想自行管理服务器所需的软硬件,就需要主机托管服务,即托管者。托管者出租服务和网站管理维护业务,并提供各种不同程度的安全级别、报告及易用性。托管者通常把很多网站放在一些强大的Web服务器上联合运行,这样可以获得更高的成本效益、可靠性和性能。
主机托管服务
在万维网的早期,每个组织自行购买自己的计算机硬件,搭建自己的计算机房,申请自己的网络连接,并管理自己的Web服务器软件。
简单例子——专用托管
假设Joe的五金商店和Mary的古董拍卖店都需要大容量的网站。Irene网络服务提供商那里有很多机架,机架上全是一样的高性能Web服务器,可以租给Joe和Mary,这样,他俩就不用自行购买自己的服务器并管理服务器软件了。
例如,Joe和Mary都签约使用Irene的网络服务提供商提供的专用Web托管服务。Joe租了专用的Web服务器,该服务器是Irene网络服务提供商购买和维护的。Mary也从Irene网络服务提供商那里租了另一个专用服务器。Irene网络服务提供商大批量地购买服务器硬件,它们选择的硬件经久耐用且相对便宜。如果Joe或Mary的网站变得更受欢迎,Irene网络服务提供商可以立刻给Joe或Mary提供更多的服务器。
虚拟主机托管
许多人想要在Web上展现自己,但他们的网站流量都不大。对这些人来说,使用专用的Web服务器可能有点儿大材小用,因为他们每月花费数百美元租来的服务器大部分时间都是空闲的!
许多Web托管者通过让一些顾客共享一台计算机来提供便宜的Web主机托管服务。这称为共享主机托管或虚拟主机托管。每个网站看起来是托管在不同的服务器上,但实际上是托管在同一个物理服务器上。从最终用户的角度来看,被虚拟托管的网站应当和托管在专用服务器上的网站没什么区别。
从成本效益、空间以及管理方面考虑,提供虚拟主机托管的公司希望能在同一个服务器上托管数十、上百,甚至上千个网站——但这不一定意味着上千个网站是用一台PC机来提供服务的。托管者可以创建成排同样的服务器,称为服务器集群(server farm),把负载分摊在群里的服务器上。因为群里的每台服务器都一样,并且托管了许多虚拟网站,所以管理起来更加方便。
当Joe和Mary刚开始商务运作时,他们可能会选择虚拟主机托管,以节省费用,直到他们网站的流量规模达到值得使用专用服务器的水平为止。
不幸的是,HTTP/1.0中的一个设计缺陷会使虚拟主机托管者抓狂。HTTP/1.0规范中没有为共享的Web服务器提供任何方法来识别要访问的是所托管的哪个虚拟网站。回想一下,HTTP/1.0请求在报文中只发送了URL的路径部分。如果要访问http://www.xxx.com/index.html,浏览器会连接到服务器www.xxx.com,但HTTP/1.0请求中只提到GET/index.html,没有提到主机名。如果服务器虚拟托管了多个站点,就没有足够的信息能指出要访问的是哪个虚拟网站。
- 如果客户端A试图访问http://www.xxx.com/index.html,请求GET/index.html将被发送到共享的Web服务器。
- 如果客户端B试图访问http://www.xxx.com/index.html,同样的请求GET/index.html也将被发送到共享的Web服务器。
就Web服务器而言,没有足够的信息可供其判断究竟要访问的是哪个网站。尽管请求的是完全不同的文档(来自不同的网站),但这两个请求看起来是一样的,这是因为网站的主机信息已经从请求中剥离了。
总结
随着Web迅速成为主流,每人都想要一个网站,但很少有人有能力或时间来搭建带空调的服务器机房,注册域名,或购买网络带宽。为了满足人们的迫切需求,出现了很多新的企业,提供了专业化管理的Web主机托管服务。服务级别有多种,从物理上的设备管理(提供空间、空调以及线缆)到完整的Web主机托管,顾客只需要提供内容就行了。
作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏⭐️ | 留言📝。
- 点赞
- 收藏
- 关注作者
评论(0)