《HTTP权威指南》6-代理

Web的中间实体

HTTP的代理服务器既是Web服务器又是Web客户端,它既需要正确地处理从客户端发来的请求和连接,返回响应,有需要向服务器发送请求,并接受响应。

私有和共享代理

代理服务器可以是某个客户端专用的,被称为私有代理,也可以是很多客户端共享的,被称为公共代理。

为什么使用代理

代理服务器可以实现各种时髦并有用的功能。可以改善安全性,提高性能,节省费用,可以看到并接触到所有流过的HTTP流量。可以监视流量并对其进行修改,可以实现很多有用的增值Web服务。下面给出几种代理的使用示例:

  • 儿童过滤器:利用过滤器代理阻止学生访问成人内容
  • 安全防火墙:代理服务器会在网络中的单一安全节点上限制哪些应用层协议的数据可以流入或流出一个组织。
  • Web缓存:维护了常用文档的本地副本,将它们按需提供,以减少缓慢且昂贵的因特网通信
  • 反向代理:假扮Web服务器,接收发给Web服务器的真实请求,然后可以发起与其他服务器的通信,以便按需定位所请求的内容。
  • 内容路由器:根据因特流量状况以及内容类型将请求导向特定的Web服务器
  • 转码器:代理服务器在将内容发送给客户端之前,可以修改内容的主题格式,在这些数据表示法之间进行的透明转换被称为转码
  • 匿名者:匿名者代理会主动从HTTP报文中删除身份特性,从而提供高度的私密性和匿名性。

代理会去往何处

在一个网络结构中部署代理时,它会位于何处???

代理服务器的部署

根据代理的目标用途,可以将代理放在任意位置,如下是部署代理服务器的几种方式:

  • 出口代理:将代理固定在本地网络的出口点,以便控制本地网络和大型因特网之间的流量。
  • 访问(入口)代理:代理常被放在ISP访问点上,用以处理来自客户的聚合请求。
  • 反向代理:通常被部署在网络边缘,在Web服务器之前,作为替代物使用。
  • 网络交换代理:可以将具有足够处理能力的代理放在网络之间的因特网对等交换点上,通过缓存来减轻因特网节点的拥塞,并对流量进行监视。

代理的层次结构

可以通过代理层次(proxy hierarchy)结构将代理级联起来。
在代理层次结构中,会将报文从一个代理传给另一个代理,直到最终抵达原始服务器为止。

代理是如何获取流量的

客户端通常会直接与Web服务器进行通信,那么HTTP流量怎样才能首先流向代理呢?
常见方式有如下四种:

  • 修改客户端:如果将客户端配置为使用代理服务器,客户端就会将HTTP请求有意地直接发送给代理。
  • 修改网络:网络基础设施可以通过若干种技术,在客户端不知道的情况下,拦截流量并将其导入代理。
  • 修改DNS的命名空间:放在Web服务器之前的代理服务器,会直接假扮Web服务器的名字和IP地址
  • 修改Web服务器:可以在某些Web服务器配置为向客户端发送一条HTTP重定向命令,将客户端请求重定向到一个代理上去。

客户端的代理设置

所有的现代Web浏览器都允许用户对代理的使用进行配置,很多浏览器提供了多种配置代理的方式

手工配置

显示地设置要使用的代理

代理的自动配置(Proxy Auto-Configuration,PAC)

PAC文件是一些小型的JavaScript程序,可以在运行过程中计算代理设置。
要使用PAC文件,就要用JavaScript PAC文件的URI来配置浏览器,浏览器会从这个URI上获取PAC文件,并用JavaScript逻辑为每次访问计算恰当的代理服务器。

WPAD(Web Proxy Autodiscovery Protocol)

WPAD协议的算法会使用发现机制,逐级上升策略自动地为浏览器找到合适的PAC文件,实现WPAD协议的客户端需要。

追踪报文

现在,在将Web请求从客户端传送到服务器的路径上,经过两个或多个代理是很常见的。
代理是由不同厂商开发的,有不同的特性和缺陷,由各种不同的组织负责管理。
随着代理的逐渐流行,我们要能够追踪经过代理的报文流,以检测出各种问题。

Via首部

Via首部字段列出了与报文途径的每个中间节点(代理或网关)有关的信息。
报文每经过一个节点,都必须将这个中间节点添加到Via列表的末尾。

TRACE方法

通过TRACE方法,用户可以跟踪经代理链传输的请求报文,观察报文经过了哪些代理,以及每个代理是如何对请求报文进行修改的。

代理认证

HTTP定义了一种名为代理认证(proxy authentication)的机制,这种机制可以阻止对内容的请求,知道用户向代理提供了有效的访问权限证书为止。

原文地址:https://www.cnblogs.com/quxikun/p/8509596.html