一台Web服务器可以搭建多个独立域名的Web网站,也可以作为通信时的中转服务器来提升传输的速率。
1. 用单台虚拟主机实现多个域名
在互联网上,域名通过DNS服务解析成IP地址,通过IP地址找到目的主机;但现在一台主机搭载了多个Web服务器,也就有多个域名,就需要在发送HTTP请求时必须在请求首部HOST指定完整的域名。
2. 代理、网关、隧道
HTTP通信时,有一些在客户端与服务器之间转发数据的程序。
代理
相当于中间人的角色,可接受客户端的请求转发给拥有资源的源服务器,也可将服务器的响应转发给客户端,就相当于中间人的角色。
可以看到,每经过一个代理服务器就会在请求首部增加via字段标记出经过的主机信息。代理可按是否使用缓存分为:缓存代理和非缓存代理;按是否修改报文分为透明代理和非透明代理。
缓存代理指在转发响应时会将其资源缓存下来,下次再遇到请求此资源时,直接将之前缓存的资源作为响应返回。非缓存代理相反不会缓存。
透明代理表示转发时不会对报文做任何加工,非透明代理于此相反。所以显而易见上图为非透明代理。
网关
接收来自客户端的请求,并像自己拥有资源一样对请求进行处理,有时客户端自己也不会知道自己在跟网关通信。
可以看出,网关在接收到请求后又去请求了非HTTP请求,然后再回复客户端HTTP响应;
利用网关能提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全。比如,网关可以连接数据库,使用SQL语句查询数据。另外,在Web购物网站上进行信用卡结算时,网关可以和信用卡结算系统联动。
隧道
在相隔较远的客户端和服务器之间进行中转的应用程序,功能与代理类似。隧道的目的是使用SSL等加密手段,确保客户端能与服务器进行安全的通信。
3. 说明
本文是《图解HTTP》读书笔记,如有错误。还请兄弟们指正,大家一起进步。