第5章 与HTTP协作的Web服务器
一台web服务器可以搭建多个独立域名的web网站,也可以作为通信路径上的中转服务器提升传输效率
5.1 用单台虚拟主机实现多个域名
使用虚拟主机的功能可以使物理层面的一台服务器,发挥多台服务器的作用,放置多个域名的网站
在相同的 IP 地址下,由于虚拟主机可以寄存多个不同主机名和域名 的 Web 网站,因此在发送 HTTP 请求时,必须在 Host 首部内完整指定主机名或域名的 URI。这样就可以区分一台服务器上的多个域名网站
5.2 通信数据转发程序:代理、网关、隧道
http通信除了用到客户端和服务端外,还有一些用于通信数据转发的程序,这些程序和服务器可以将请求转发到线路的下一站服务器,并且能接收服务器发送的响应转发给客户端,有如下概念:
- 代理
一种有转发功能的应用程序,接收由客户端发送的请求并转发给服务器,同时 也接收服务器返回的响应并转发给客户端
- 网关
转发其他服务器通信数据的服务器,接收从客户端发送来的请求,客户端不一定察觉得到它
- 隧道
指在相隔甚远的c和s间进行中转,并保持双方通信连接的应用程序
5.2.1 代理
基本行为:接收+转发,不改变请求URI
只不过每次代理会追加写入 Via 首部
设置它的作用和常见目的有这几个:
- 利用缓存技术减少带宽的流量
- 组织内部针对特定网站的访问控制
- 获取访问日志
代理可按两种基准分类:
- 是否使用缓存:缓存代理(Caching Proxy) 会预先将资源的副本存在代理服务器上
- 是否修改报文:透明代理(Transparent Proxy)在转发时不会对博阿文做任何加工
5.2.2 网关

利用网关可以将HTTP请求转换为其他协议的通信
和代理类似,而网关能使通信线路的服务器提供非HTTP服务
它的目的主要是 提高通信的安全性 ,通过通信线路上的加密确保连接安全5.2.3 隧道
按要求建立起一条与其他服务器的通信线路,届时使用 SSL 等 加密手段进行通信
隧道本身不会解析HTTP请求,只是保持原样做中转,断开连接时结束
用户无感知5.3 保存资源的缓存
缓存是指代理服务器或客户端本地磁盘内保存的资源副本,利用缓存可以减少对源服务器的访问,节省通信流量和通信时间
缓存服务器属于代理服务器的一种
源服务器不必多次处理相同的请求
5.3.2 缓存的有效期限
即使存在缓存,也会因为客户端的要求、缓存的有效期等因素,向源 服务器确认资源的有效性。若判断缓存失效,缓存服务器将会再次从 源服务器上获取“新”资源。
5.3.3 客户端的缓存
缓存不仅可以存在于缓存服务器中,还可以在客户端浏览器中,当然也存在有效性的问题
