Web中的代理(Proxy)

121 阅读3分钟

1.代理:Web的中间实体
HTTP客户端会向代理发送请求报文,代理服务器必须像Web服务器一样,正确地处理请求和连接,然后返回响应。同时,代理自身要向服务器发送请求,这样其行为就必须像正确的HTTP客户端一样,要发送请求并接受响应。如果要创建自己的HTTP代理,就要认真遵循为HTTP客户端和HTTP服务器制定的规则。

2.为什么使用代理:
代理服务器可以实现各种时髦且有用的功能,它们可以改善安全性、提高性能、节省费用。代理服务器可以看到并接触到所有流过的HTTP流量,所以代理可以监视流量并对其进行修改,以实现很多有用的增值Web服务。下面是一些场景:

  • 对儿童过滤成人内容
  • 文档访问控制
  • 安全防火墙
  • Web缓存
  • 反向代理
  • 内容路由器
  • 转码器
  • 匿名者

3.代理和网关的区别:

  • 理论上,代理连接的是两个或多个使用相同协议的应用程序,网关连接的则是两个或多个使用不同协议的端点。网关扮演的是“协议转换器”的角色,即使客户端和服务器使用的是不同的协议,客户端也可以通过它完成与服务器之间的事务处理。
  • 实际上,代理和网关之间的区别很模糊。代理也经常要做一些协议转换工作。而商业化的代理服务器也会实现网关的功能来支持SSL安全协议、SOCKS防火墙、FTP访问,以及基于Web的应用程序。

4.代理服务器的部署:
可以根据其目标用途,将代理放在任意位置:

  • 出口代理:
  • 访问(入口)代理:
  • 反向代理:
  • 网络交换代理:

5.代理是如何获取流量的:
客户端通常会直接与Web服务器进行通信,所以文明要解释清楚HTTP流量怎样才能首先流向代理。有4种常见方式可以使客户端流量流向代理:

  • 修改客户端:很多Web客户端,包括网景和微软的浏览器,都支持手动和自动的代理配置。如果将客户端配置为使用代理服务器,客户端就会将HTTP请求有意地直接发送给代理而不是原始服务器。
  • 修改网络:网络基础设施可以通过若干种技术手段在客户端不知道或没有参与的情况下,拦截网络流量并将其导入代理。这种拦截通常都依赖于监视HTTP流量的交换设备及路由设备,在客户端毫不知情的情况下对其进行拦截,并将流量导入一个代理。这种代理被称为拦截代理
  • 修改DNS的命名空间:放在Web服务器之前的代理服务器---反向代理,会直接假扮Web服务器的名字和ip地址,这样所有的请求就会发送给这些反向代理而不是原始服务器。要实现这一点,可以手工编辑DNS名称列表,或者用特殊的动态DNS服务器根据需要来确定适当的代理或服务器。有时在安装过程中,真实服务器的ip地址和名称被修改了,反向代理得到的会是之前的地址和名称。
  • 修改Web服务器:也可以将某些Web服务器配置为向客户端发送一条HTTP重定向命令(响应码305),将客户端请求重定向到一个代理上去。收到重定向命令后,客户端会与代理进行通信。

6.与代理请求有关的一些棘手问题:

6.1代理URI与服务器URI的不同:
6.2与虚拟主机一样的问题:
6.3拦截代理会收到部分URI: