出于成本或者其他考虑,要求在同一远程云服务器(ip地址唯一)上部署多个网站.比如提供web托管服务(Web hosting service)的供应商,可以用一台服务器为每位客户的域名运行不同的网站.所以,同一台物理服务器在外界看来,就像多个服务器,就是利用了虚拟主机(virtual hosting)的功能.图1所示,当前云服务器A的公网ip地址是10.12.112.115,现在要求在服务器A上同时托管域名为www.test1.com和www.test2.com的两个网站.
图1 virtual hosting原理图
客户端使用http协议访问网站时,主要使用域名,比如www.test1.com,而域名首先通过DNS服务器的解析,转换为ip地址,然后客户端再以ip地址形式访问目标网站.
按上述流程,客户端对网站www.test1.com和www.test2.com的访问,最终都会访问呢ip地址为10.12.112.115的云服务器A.问题就是服务器A收到请求后,如何区分客户端实际要访问的是哪个域名?
这就要借助于http请求的http首部的Host字段.客户端发送http请求时,必须在host字段填充主机名或者域名(图2所示),服务器端收到http请求时,根据host字段中的值决定当前请求由哪台虚拟主机处理.
具体的操作看参看本文的实践篇.
图2 http请求的host字段填充