HTTP/1.1 规范允许一个 HTTP 服务器搭建多个站点。
1. 用单台虚拟主机实现多域名
HTTP/1.1
允许一个 HTTP
服务器搭建多个站点,势必会有一个 IP
对应多个域名的情况,那么 DNS
解析出IP之后HTTP怎么来区分访问的是哪个站点呢?
发送HTTP请求报文时,必须在头部 Host
字段内完整的指定主机名或者域名的 URI
2.通信数据转发程序:代理、网关、隧道
1) 代理
代理服务器的基本行为就是接收客户端请求转发给其他服务器。代理不会改变请求的 URI
,会将请求直接发送给持有资源的服务器。
持有资源实体的服务器被称为源服务器。由源服务器返回的响应经过代理服务器传输至客户端。
在HTTP请求过程中可以级联多台代理服务器,请求和响应的转发会经过数台串联起来的代理服务器,转发时附加Via头部字段以标记经过的代理服务器。
为什么要使用代理服务器?
- 缓存
- 限制访问某些URI
- 获取访问日志
- 等等
代理的多种使用方法,按照基准分类,是否进行缓存?是否对报文进行修改?
- 缓存代理
代理转发响应时,缓存代理(Caching proxy
)会对响应报文进行复制保存,当客户端再次发送相同的请求时,代理服务器返回保存的响应报文不再转发给资源服务器。 - 透明代理
代理服务器不对报文进行任何修改称为透明代理,反之称为非通明代理。
2)网关
网关的工作机制跟代理服务器很像,网关可以提供非 HTTP
服务,也就是可以在网关对接结算系统等等。(网关是一种充当转换重任的计算机系统或设备。使用在不同的通信协议、数据格式或语言,甚至体系结构完全不同的两种系统之间,网关是一个翻译器。)
3)隧道
隧道可以按照要求与其他服务器建立一条通信线路,使用SSL
等加密手段进行通信,隧道的目的是使客户端和服务端进行安全的通信。
隧道并不会解析HTTP请求
,保持原样解析给转发的服务器,隧道会在通信双方断开时结束。
3. 保存资源的缓存
缓存是指代理服务器或客户端资盘中保留的资源副本。利用缓存可减少对服务器的访问,缩短响应时间,节省通信流量
缓存的有效期限
即使存在缓存也会因为客户端的需求、缓存的有效期等像服务器查询缓存的有效性,若缓存失效需要再次向源服务器请求新的资源。客户端缓存
缓存不光存在与缓存代理服务器,客户端的浏览器,终端(Android、iOS
)的数据库,文件等,都可以存放缓存,和缓存代理服务器相同客户端缓存也有有效期限。