与HTTP协作的Web服务器

一台Web服务器可以搭建多个独立域名的Web网站,也可以作为数据转发服务器提升传输效率。

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

HTTP协议规范允许一台HTTP服务器搭建多个Web站点,也可以说在相同的IP地址下Web服务器可以寄存多个不同主机名和域名的Web网站,因此在发送HTTP请求是,必须在Host部首内部完整的指定主机名或域名的URI。即一个 一个域名只能对应一个ip,但一个ip可以对应多个域名

域名在DNS服务器里面做解析的时候,一条记录只能指向一个IP地址。如果一个子域名指向两个IP地址,当打开这个域名时,浏览器就不知道显示那个IP地址。当IP绑定到一台服务器时可以在服务器上设置多个主机头,每个主机头绑定一个域名。这样当访问者打开服务器上站点时,服务器会根据访问正访问的时那个域名,来展示对应域名的网站内容。

2. 用作数据转发

HTTP通信除了客户端与服务器之间的信息交互外还有一些用户通信数据转发的应用程序,例如网络代理,网关和隧道。这些应用程序和服务器可以将请求转发给通信线路上的下一站服务器,并接收从那台服务器上发送的响应再转发给客户端。

2.1 代理

代理是一种具有转发功能的应用程序,它扮演了位于服务器和客户端“中间人”的角色,接收由客户端发送的请求并转发给服务器,同时也接收服务器的响应并转发给客户端。每次通过代理服务器转发请求或者响应会追加写入Via部首信息。

代理服务器内部可以设施做到针对特定URI访问的控制

1
2
3
4
5
6
                         GET / HTTP/1.1             GET / HTTP/1.1
客 GET / HTTP/1.1 代理 Via: proxy1 代理 Via: proxy2, proxy1 资源
户 ---------------> 服务 ----------------> 服务 -----------------------> 服务
端 <--------------- 器1 <----------------- 器2 <----------------------- 器
HTTP/1.1 200 OK HTTP/1.1 200 OK HTTP/1.1 200 OK
Via: proxy2, proxy1 Via: proxy2

2.2 网关

网关是转发其他服务器通信数据的服务器,接收从客户端发送来的请求,它就像自己拥有通信资源的服务器一样对请求进行处理。有时客户端都可能不会察觉,自己的通讯目标是一个网关。(可以理解为南北向服务)

2.3 隧道

隧道是在两个相隔很远的客户端和服务器两者之间进行中转,并保持双方通信连接的应用程序。隧道本身不会去解析HTTP请求。也就是说请求保持原样中转给之后的服务器。

3. 保存资源的缓存

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

请求的资源如果已经被缓存则直接由缓存服务器返回给客户端。

同时缓存存在有效期的概念,缓存服务器或客户端判断资源不再有效会先向资源服务器确认资源有效性。若判断浏览器缓存失效,浏览器会再次请求新的资源。

IE浏览器起将缓存称为临时网络文件。

4. HTTP之前的协议介绍

  • FTP 传输文件时使用该协议
  • NNTP
  • Archie
  • WAIS
  • Gopher