与HTTP协作的Web服务器
用单台虚拟主机实现多个域名
简单来说就是利用虚拟技术在一台实体主机上虚拟出多台主机的效果,即实际上只有一台但是看上去有多台。
由于一台主机上虚拟了很多主机所以在实际请求时不同的域名经由DNS服务器解析后的IP地址是相同的,所有在发送HTTP的请求时,必须在Host首部内完整指出主机名或域名的URI才能实际确定请求。
通信数据转发程序:代理、网关、隧道
代理
代理是一种有转发功能的应用程序,接收由客户端发送的请求,同时也接收服务器返回的响应并转发给服务器,简单了可理解为快递转发中转站。
在HTTP通信的过程中,可级联多台代理服务器。请求和响应的转发会经过数台类似锁链一样连接起来的代理服务器。转发时,需要附加Via首部字段以标记处经过的主机信息,可以理解为西游记中师徒四人经过一个国家时盖印通关文牒,盖印即为Via。
也可以通过设置组织内部的代理服务器可做到针对特定URI访问的控制。
代理有多种使用方法,按两种基准分类。一种是是否使用了缓存,另一种是是否会修改报文。
缓存代理
简单来说第一次准发响应时会将数据复制一份放置在代理服务器上,当下次有同样的资源请求时就可以不从源服务器获取资源而是将之前缓存的资源作为响应返回。
透明代理与非透明代理
转发请求或响应时,不对报文做任何加工的代理类型被称为透明代理。反之,对报文内容进行加工的代理被称为非透明代理。
网关
网关的机制与代理十分相似。而网关能使通信线路上的服务器提供非HTTP协议服务。利用网关可以由HTTP请求转化为其他协议通信。同时网关能提高通信的安全性,因为可以在客户端与网关之间的通信线路上加密以确保连接的安全。比如,网关可以连接数据库,使用SQL语句查询数据。
隧道
隧道可按要求建立起一条与其他服务器的通信线路,届时使用SSL等加密手段进行通信。隧道的目的是确保客户端能与服务器进行安全的通信。
隧道不会解析HTTP请求,并且会在通信双方断开连接时结束。通过隧道的传输,可以和远距离的服务器安全通信。
保存资源的缓存
缓存服务器是代理服务器的一种,当代理转发从服务器返回的响应时,代理服务器将会保存一份资源的副本,当下次的请求资源如果已经被缓存则直接由缓存服务器返回给客户端。此时就会减轻了源服务器的压力。
但是此时还有一个问题,那便是资源缓存的有效期的问题,所以即使存在缓存,也会因为客户端的要求,缓存的有效期等因素,向源服务器确认资源的有效性。若判断缓存资源失效,缓存服务器将会再次从源服务器上获取新的资源。
缓存不仅可以存在于缓存服务器内,还可以存在于客户端浏览器中,客户端缓存称为临时网络文件,浏览器缓存若有效,就不必再向源服务器请求相同的资源了,可以直接从本地磁盘读取。但是同样也会涉及缓存有效期的问题。