- HTTP 并不是独自运行在网上的。很多协议都会在 HTTP 报文的传输过程中对其数据进行管理。HTTP 只关心旅程的端点(发送者和接收者),但在包含有镜像服务器、Web 代理和缓存的网络世界中,HTTP 报文的目的地不一定是直接可达的。
- 重定向技术通常可以用来确定报文是否终结于某个代理、缓存或服务器集群中某台特定的服务器。重定向技术可以将报文发送到客户端没有显式请求的地方去。
1. 为何要重定向
- 由于 HTTP 应用程序总是要做下列 3 件事情,所以在现代网络中重定向是普遍存在的:
- 可靠地执行 HTTP 事务;
- 最小化时延;
- 节约网络带宽。
- 出于这些原因,Web 内容通常分布在很多地方。可以将重定向当作一组有助于找到“最佳”分布式内容的技术。
- 由于重定向和负载均衡是共存的,所以本章也涵盖了负载均衡的话题。大多数重定向部署都包含了某些形式的负载均衡。也就是说,它们可以将输入报文的负载分摊到一组服务器中去。反之,因为输入报文一定会在分担负荷的服务器之间进行某种分布,所以任意形式的负载均衡中都包含了重定向。
2. 重定向到何地
- 从客户端向目标发送 HTTP 请求,目标对其进行处理的角度来看,服务器、代理、缓存和网关对客户端来说都是服务器。很多重定向技术都可用于服务器、代理、缓存和网关,因为它们具有共同的,与服务器类似的特征。
- 其他一些重定向技术是专门为特定类型的端点设计的,没有通用性。
- Web 服务器会根据每个 IP 来处理请求。将请求分摊到复制的服务器中去,就意味着应该把对某特定 URL 的每条请求都发送到最佳的 Web 服务器上去(最靠近客户端的、或负载最轻的或采用其他优化策略选择的服务器)。
- 代理希望根据每个协议来处理请求。在理想情况下,某个代理附近的所有 HTTP 流量都应该通过这个代理传输。因为代理缓存上会存储常用的文档,可以直接提