十八章、主机托管
对内容资源的存储、协调以及管理的职责统称为Web主机托管
许多Web托管者通过一些顾客共享一台计算机来提供便宜的Web主机托管服务,这称之为共享主机托管或虚拟主机托管
1、设法让虚拟主机托管正常工作的四种方法:
通过URL路径进行虚拟主机托管(了解)
在URL中添加专门的路径部分,以便服务器判断是哪个网站
通过端口号进行主机托管(了解)
为每个站点分配不同的端口号,这样请求就由Web服务器的单独实例处理
通过IP[地址进行主机托管(常用)
为不同的虚拟站点分配专门的IP地址,把这些地址都绑定到一台单独的机器上。这样Web服务器就可以通过IP地址来识别网站名了
遇到的问题:
在计算机系统上能绑定的虚拟IP地址通常是有限的
IP地址稀缺资源
托管者通过复制服务器来增加容量时,IP地址短缺的问题更严重。
通过Host首部进行主机托管
浏览器和服务器的实现者扩展了HTTP,把原始的主机名提供给服务器。
把主机名(和端口号)放在所有请求的Host扩展首部中传送。
GET /index.html HTTP/1.1 User-agent :SuperBrowser v1.3 Host : www.joes-hardware.com
2、HTTP/1.1的Host首部
2.1、Host首部是HTTP/1.1的请求首部,定义在RFC2068中。绝大多数HTTP客户端(即使是不遵循HTTP/1.1的客户端),都实现了Host首部。
Host首部描述了所请求的资源所在的因特网主机和端口号,和原始的URL中的一样
Host = "Host" ":" host [ ":" port ]
注:
a)、如果Host首部不包含端口,就使用地址方案中默认的端口
b)、如果URL中包含IP地址,Host首部就应当包含同样的地址;
c)、如果URL中包含主机名,Host首部就必须包含同样的名字;
d)、如果URL中包含主机名,Host首部就不应当包含URL中这个主机名对应的IP地址
因为这样会扰乱虚拟主机托管服务器的工作,它在同一个IP地址上堆叠了很多虚拟站点
e)、如果URL中包含主机名,Host首部就不应当包含这个主机名的其它别名,因为这样会扰乱虚拟主机托管服务器的工作
f)、如果客户端显式地使用代理服务器,客户端就必须把原始服务器,而不是代理服务器的名字和端口放在Host首部中。
g)、Web客户端必须在所有请求报文中包含Host首部;
h)、Web代理必须在转发请求报文之前,添加Host首部;
j)、HTTP/1.1的Web服务器必须用400状态码来响应所有缺少Host首部字段的HTTP/1.1请求报文
2.2、缺失Host首部可能会把用户导向某个默认的Web页面,也可能返回一个错误页面建议用户升级浏览器。
2.3、
主原始服务器(master origin server):含有原始内容
复制原始服务器(replica origin server): 从主原始服务器接收内容的镜像服务器
2.4、把客户端的请求导向特定的服务器
HTTP重定向:该内容的URL会解析到主服务器的IP地址,然后它会发送重定向到复制服务器
DNS重定向:请求内容的URL会解析到几个IP地址,DNS服务器可以选择发送给客户端的IP地址
2.5、内容分发网络
CDN:对特定内容进行分发的专门网络。这个网络中的节点可以是Web服务器、反向代理或缓存
反向代理和镜像服务器之间的区别在于反向代理通常是需求驱动的。它们不会保存原始服务器的全部内容副本,它们只保存客户端请求的那部分内容。
反向代理具有“预取特性” -----可以在用户请求之前就从服务器上载入内容
2.6、让网站更快
服务器集群和分布式代理缓存或反向代理服务器分散了网络流量,可以避免拥塞,分发内容使之更靠近终端用户,这样从服务器到客户端的传输时间就更短。
请求和响应穿过因特网,在客户端和服务器端传输的方式是影响资源访问速度最主要的因素。