第5章 与HTTP协作的Web服务器

一台web服务器可以搭建多个独立域名的web网站,也可以作为通信路径上的中转服务器提升传输效率

5.1 用单台虚拟主机实现多个域名

使用虚拟主机的功能可以使物理层面的一台服务器,发挥多台服务器的作用,放置多个域名的网站
在相同的 IP 地址下,由于虚拟主机可以寄存多个不同主机名和域名 的 Web 网站,因此在发送 HTTP 请求时,必须在 Host 首部内完整指定主机名或域名的 URI。这样就可以区分一台服务器上的多个域名网站


5.2 通信数据转发程序:代理、网关、隧道

http通信除了用到客户端和服务端外,还有一些用于通信数据转发的程序,这些程序和服务器可以将请求转发到线路的下一站服务器,并且能接收服务器发送的响应转发给客户端,有如下概念:

  • 代理

一种有转发功能的应用程序,接收由客户端发送的请求并转发给服务器,同时 也接收服务器返回的响应并转发给客户端

  • 网关

转发其他服务器通信数据的服务器,接收从客户端发送来的请求,客户端不一定察觉得到它

  • 隧道

指在相隔甚远的c和s间进行中转,并保持双方通信连接的应用程序

5.2.1 代理

基本行为:接收+转发,不改变请求URI
第5章 与HTTP协作的Web服务器 - 图1
只不过每次代理会追加写入 Via 首部
设置它的作用和常见目的有这几个:

  • 利用缓存技术减少带宽的流量
  • 组织内部针对特定网站的访问控制
  • 获取访问日志

代理可按两种基准分类:

  • 是否使用缓存:缓存代理(Caching Proxy) 会预先将资源的副本存在代理服务器上
  • 是否修改报文:透明代理(Transparent Proxy)在转发时不会对博阿文做任何加工

    5.2.2 网关

    第5章 与HTTP协作的Web服务器 - 图2
    利用网关可以将HTTP请求转换为其他协议的通信
    和代理类似,而网关能使通信线路的服务器提供非HTTP服务
    它的目的主要是 提高通信的安全性 ,通过通信线路上的加密确保连接安全

    5.2.3 隧道

    按要求建立起一条与其他服务器的通信线路,届时使用 SSL 等 加密手段进行通信
    隧道本身不会解析HTTP请求,只是保持原样做中转,断开连接时结束
    第5章 与HTTP协作的Web服务器 - 图3
    用户无感知

    5.3 保存资源的缓存

    缓存是指代理服务器或客户端本地磁盘内保存的资源副本,利用缓存可以减少对源服务器的访问,节省通信流量和通信时间

缓存服务器属于代理服务器的一种
第5章 与HTTP协作的Web服务器 - 图4
源服务器不必多次处理相同的请求

5.3.2 缓存的有效期限

即使存在缓存,也会因为客户端的要求、缓存的有效期等因素,向源 服务器确认资源的有效性。若判断缓存失效,缓存服务器将会再次从 源服务器上获取“新”资源。

5.3.3 客户端的缓存

缓存不仅可以存在于缓存服务器中,还可以在客户端浏览器中,当然也存在有效性的问题
第5章 与HTTP协作的Web服务器 - 图5