【读书笔记】《HTTP权威指南》:Web Hosting
一、概述
从零开始构建一个真正意义的网站需要做很多事情,包括购买计算机硬件、建造机房、注册域名、购买网络带宽、开发Web服务器软件、管理网站内容等等。在互联网发展的早期,构建网站的这一系列动作通常都是由单个组织独自完成的。
在互联网已成主流的今天,很多人都想拥有一个自己的网站,但很少人具备构建网站的技能或时间。这一多一少的反差,直接催生了大量专业的机构和公司,它们根据用户(个人或企业)需求程度的不同,提供不同级别的网站构建服务:从仅仅提供硬件设施,到提供全站式服务(此时用户只需要提供网站内容即可)。
这些构建网站所需的一系列动作统称为Web托管(Web Hosting),而那些提供Web托管服务(Web Hosting Services)的机构和公司则称为Web托管服务提供商(Hoster)。
共享Web托管分为专用托管(又称专用主机,Dedicated Hosting)和虚拟托管(又称虚拟主机,Virtual Hosting)两种方式。
二、专用主机
在专用主机中,一个网站独占一个Web服务器。
不同网站使用不同的Web服务器,而不同Web服务器具有不同的因特网IP地址,因此用户对不同网站的访问完全是相互独立的。
三、虚拟主机
在虚拟主机中,多个网站共享同一个Web服务器。
1. 缺乏主机信息的问题(Virtual Server Request Lacks Host Information)
例如两个网站A(域名为http://www.a.com)和B(域名为http://www.b.com)共享同一个Web服务器H(从而DNS服务器会将A和B的域名映射到同一个因特网IP地址),则用户访问站点A或B时,最终都会把请求发给同一个Web服务器实体:
- 访问http://www.a.com/index.html时,含有“GET /index.html”的HTTP请求将会被发给Web服务器H
- 访问http://www.b.com/index.html时,含有“GET /index.html”的HTTP请求将会被发给Web服务器H
显然,当Web服务器H收到同样的“GET /index.html”请求时,并没有足够的信息让它判断被访问的站点到底是A还是B。
问题的关键就在于HTTP请求中不包含主机信息。由于HTTP/1.0在设计之初认为一个Web服务器只会托管一个网站(即专用主机的应用场景),所以去掉了URL中稍显冗余的主机名(hostname),导致HTTP请求的URL中就只含有路径部分(path component)。HTTP/1.0的这种假设和处理显然无法应付虚拟主机的应用场景,
2. 让虚拟主机正常工作(Making Virtual Hosting Work)
为了解决上述问题,以下四种技术方案(workarounds)应运而生:
- 添加特殊的URL路径(URL path)
给不同站点添加不同的路径前缀。例如对于站点A:原来的http://www.a.com/index.html变成了http://www.a.com/a/index.html,对应的URL请求则变成了“GET /a/index.html”;对于站点B:原来的http://www.b.com/index.html变成了http://www.b.com/b/index.html,对应的URL请求则变成了“GET /b/index.html”。
缺点:1)主机名www.a.com中有“a”,路径中也有“a”,既显得冗余又让人迷惑;2)访问站点的一般规则被打破了,输入http://www.a.com或http://www.a.com/index.html无法访问该站点的首页。
- 指定不同的端口号
给不同站点指定不同的端口号。例如站点A使用80端口,站点B使用82端口。
缺点:打破了HTTP协议的默认端口号是80的规则,可以想象用户不能通过http://www.b.com甚至http://www.b.com:80访问站点B,却必须使用http://www.b.com:82时会有多么恼火。
- 指定不同的IP地址
Web服务器上绑定多个IP地址,并给不同站点指定不同的IP地址。例如网站A使用209.172.34.3,网站B使用209.172.34.4。当用户访问http://www.a.com时,经过域名解析后,实际会与209.172.34.3建立TCP链接,并发起HTTP请求,Web服务器就可以根据目的IP(209.172.34.3)来识别出被访问的站点(即网站A);类似地,用户访问http://www.b.com时,Web服务器发现目的IP为209.172.34.4,从而得知被访问是站点B。
缺点:1)Web服务器所在的单个计算机通常只能绑定有限个数的IP地址,如果一个Web服务器打算托管成百上千的站点,那就只能打消这个算盘了;2)因特网的IP地址是个昂贵而又稀缺的资源,使用过多的IP地址很烧钱并且还不只是钱的问题。
- 协议新增支持主机头部(Host headers)
在HTTP/1.0+中扩展引入了主机头部(Host headers),在HTTP/1.1中更是明确规定了HTTP请求中需要包含主机头部(Host headers)。主机头部给出被访问的站点或资源所在的因特网主机名和端口号:Host = "Host" ":" host [ ":" port ]
例如访问站点A(http://www.a.com/index.html)的HTTP请求如下:
GET /index.html HTTP/1.1
User-Agent: SuperBrowser v1.3
Host: www.a.com
访问站点B(http://www.b.com/index.html)的HTTP请求如下:
GET /index.html HTTP/1.1
User-Agent: WebSurfer 2000
Host: www.b.com:80
缺点:无。此为终极方案。
四、更可靠的网站(Making Web Sites Reliable)
1. 服务器集群(Server Farm or Server Cluster)
服务器集群是指大量内容相同、功能等效、相互可替换的Web服务器。(相关定义可参考维基百科)
服务器集群中的服务器一般分为主服务器(Master servers or Primary servers)和备份服务器(Replica servers or Backup servers)。主服务器故障时,备份服务器可以作为替换,主/备服务器与负载均衡器(Load balancer)一起配合可以实现负载均衡(Load balancing)。
服务器集群中的主/备服务器可以部署在同一个位置(集中式),也可以分布在不同的地方(分布式)。集中式的主/备服务器之间的互连和切换通常由交换机(Network switch)来完成;分布式的主/备服务器由互联网连接,相互之间的切换可以通过HTTP重定向(HTTP redirection)或DNS重定向(DNS redirection)来实现。
2. 内容分布式网络(Content Distribution Network, CDN)
内容分布式网络的应用有反向代理缓存服务器(Surrogate Cache)和代理缓存服务器(Proxy Cache)等。(相关定义可参考维基百科和内容分布式网络说明)
【读书笔记】《HTTP权威指南》:Web Hosting的更多相关文章
- [读书笔记] CSS权威指南2: 结构和层叠
层叠样式表中最基本的一个方面可能就是层叠——冲突的声明要通过这个层叠过程排序,并由此确定最终的文档表示.这个过程的核心是选择器及其相关声明的特殊性,以及继承机制. 特殊性 对于每个规则,用户代理会计算 ...
- [读书笔记] CSS权威指南1: 选择器
通配选择器 可以与任何元素匹配,就像是一个通配符 /*每一个元素的字体都设置为红色*/ * { color: red; } 元素选择器 指示文档元素的选择器. /*为body的字体设置为红色*/ bo ...
- [读书笔记]Hadoop权威指南 第3版
下面归纳概述了用于设置MapReduce作业输出的压缩格式的配置属性.如果MapReduce驱动使用了Tool接口,则可以通过命令行将这些属性传递给程序,这比通过程序代码来修改压缩属性更加简便. Ma ...
- 《软件测试自动化之道》读书笔记 之 底层的Web UI 测试
<软件测试自动化之道>读书笔记 之 底层的Web UI 测试 2014-09-28 测试自动化程序的任务待测程序测试程序 启动IE并连接到这个实例 如何判断待测web程序完全加载到浏览 ...
- 《黑客攻防技术宝典Web实战篇@第2版》读书笔记1:了解Web应用程序
读书笔记第一部分对应原书的第一章,主要介绍了Web应用程序的发展,功能,安全状况. Web应用程序的发展历程 早期的万维网仅由Web站点构成,只是包含静态文档的信息库,随后人们发明了Web浏览器用来检 ...
- HTML5权威指南--Web Storage,本地数据库,本地缓存API,Web Sockets API,Geolocation API(简要学习笔记二)
1.Web Storage HTML5除了Canvas元素之外,还有一个非常重要的功能那就是客户端本地保存数据的Web Storage功能. 以前都是用cookies保存用户名等简单信息. 但是c ...
- 【读书笔记】iOS-使用Web Service-基于客户端服务器结构的网络通信(一)
Web Service技术是一种通过Web协议提供服务,保证不同平台的应用服务可以互操作,为客户端程序提供不同的服务. 目前3种主流的Web Service实现方案用:REST,SOAP和XML-RP ...
- 【读书笔记】iOS网络-Web Service协议与风格
协议指的是在与其它系统交换结构化信息时所要遵循的一套格式,过程与规则.此外,协议定义了在传输过程中所要使用的数据格式.这样,接收系统就能正确地解释结构化信息并做出正应的回应. 1,简单对象访问协议. ...
- 读书笔记之深入分析Java Web技术内幕
章节: 1 B/SB/S的优点: 客户端使用统一的浏览器(Browser) ,浏览器的统一带来了操作的统一,无论使用什么服务,因为浏览器是相同的,所以操作类似.客户使用简单了.服务端开发简化; 使用统 ...
- 【读书笔记】iOS-网络-Web Service协议与风格
协议指的是在与其它系统交换结构化信息时所要遵循的一套格式,过程与规则.此外,协议定义了在传输过程中所要使用的数据格式.这样,接收系统就能正确地解释结构化信息并做出正应的回应. 1,简单对象访问协议. ...
随机推荐
- stl源码分析之priority queue
前面两篇介绍了gcc4.8的vector和list的源码实现,这是stl最常用了两种序列式容器.除了容器之外,stl还提供了一种借助容器实现特殊操作的组件,谓之适配器,比如stack,queue,pr ...
- 「Leetcode」14. Longest Common Prefix(Java)
分析 与其说是算法题,不如说是语言特性题. 这题要是对Java的String相关函数掌握的比较熟练,写起来的速度(各种意义上)就会很快. 大致的思路都是一致的,差不到哪里去,无非是枚举长度.值得一提的 ...
- CentOS 下 Java 的下载、安装、配置
CentOS 下 Java 的下载.安装.配置 系统: CentOS 7 x86_64 Java 版本: 1.8.0_171 本文将 Java 目录放在 /usr/local/java 文件夹下,读者 ...
- php文章tag标签的增删
<?php session_start(); if($_POST){ $_SESSION['old']=array('one','two','three','four', ...
- VPS挂机赚美刀详细介绍–Alexamaster操作流程
跟 vps 主机打交道时间长了,手里也渐渐积累了些闲置的 vps.让它们这么闲着吧,感觉有些浪费资源:用起来吧,暂时又没有好的项目.一直听说通过 vps挂机可以赚回主机成本,甚至可以盈利.正好这两天有 ...
- SQL判断是否存在
判断数据库是否存在 ifexists(select*frommaster..sysdatabaseswherename=N’库名’) print’exists’ else print’notexist ...
- Scrum立会报告+燃尽图(十月二十日总第十一次)
此作业要求参见:https://edu.cnblogs.com/campus/nenu/2018fall/homework/2246 项目地址:https://git.coding.net/zhang ...
- static块的本质
在网上看到了下面的一段代码: public class Test { static { _i = 20; } public static int _i = 10; public static void ...
- 团队Alpha冲刺(二)
目录 组员情况 组员1(组长):胡绪佩 组员2:胡青元 组员3:庄卉 组员4:家灿 组员5:凯琳 组员6:丹丹 组员7:家伟 组员8:政演 组员9:黄鸿杰 组员10:刘一好 组员11:何宇恒 展示组内 ...
- 安装Ubuntu 16.04双系统详解(Nvidia显卡)
Ubuntu16.04双系统安装 一.准备工作 设备:惠普台式机,i5-7400.8G内存.1T机械硬盘.NVIDIA GTX1050显卡.预装系统:Win10. 1.下载ubuntu镜像文件,本人使 ...