3月阅读周·HTTP权威指南:代理之代理会去往何处篇

举报
叶一一 发表于 2025/03/16 19:14:38 2025/03/16
【摘要】 引言HTTP(Hypertext Transfer Protocol,超文本传输协议[插图])是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解...

引言

HTTP(Hypertext Transfer Protocol,超文本传输协议[插图])是在万维网上进行通信时所使用的协议方案。HTTP有很多应用,但最著名的是用于Web浏览器和Web服务器之间的双工通信。

《HTTP权威指南》一书将HTTP中一些互相关联且常被误解的规则梳理清楚,并编写了一系列基于各种主题的章节介绍HTTP各方面的特性。纵观全书,对HTTP“为什么”这样做进行了详细的解释,而不仅仅停留在它是“怎么做”的。此外,这本书还介绍了很多HTTP应用程序正常工作所必需且重要的非HTTP技术。

这本书主要包括以下内容:

  • 第一部分描述了Web的基础构件与HTTP的核心技术
  • 第二部分重点介绍了Web系统的结构构造块:HTTP服务器、代理、缓存、网关以及机器人应用程序。
  • 第三部分提供了一套用于追踪身份、增强安全性以及控制内容访问的技术和技巧。
  • 第四部分涵盖HTTP报文主体和Web标准,前者包含实际内容,后者描述并处理主体内容。
  • 第五部分介绍了发布和传播Web内容的技巧。
  • 第六部分是一些很有用的参考附录,以及相关技术的教程。

代理

Web代理(proxy)服务器是网络的中间实体。代理位于客户端和服务器之间,扮演“中间人”的角色,在各端点之间来回传送HTTP报文。

代理会去往何处

现在我们来看看在一个网络结构中部署代理的时候,它会位于何处。

代理服务器的部署

可以根据其目标用途,将代理放在任意位置。

  • 出口代理:可以将代理固定在本地网络的出口点,以便控制本地网络与大型因特网之间的流量。可以在公司网络中使用出口代理(参见图6-11a),提供针对公司外部恶意黑客的防火墙保护,或降低带宽费用,提高因特网流量的性能。小学可能会使用过滤出口代理来防止早熟的学生浏览不恰当的内容。
  • 访问(入口)代理:代理常被放在ISP访问点上,用以处理来自客户的聚合请求。ISP使用缓存代理来存储常用文档的副本,以提高用户(尤其是高速连接用户)的下载速度,降低因特网带宽耗费。
  • 反向代理:代理通常会被部署在网络边缘,在Web服务器之前,作为替代物(也常被称为反向代理)使用,在那里它们可以处理所有传送给Web服务器的请求,并只在必要时向Web服务器请求资源。替代物可以提高Web服务器的安全特性,或者将快速的Web服务器缓存放在较慢的服务器之前,以提高性能。反向代理通常会直接冒用Web服务器的名字和IP地址,这样所有的请求就会被发送给代理而不是服务器了。
  • 网络交换代理:可以将具有足够处理能力的代理放在网络之间的因特网对等交换点上,通过缓存来减轻因特网节点的拥塞,并对流量进行监视。

代理的层次结构

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

Proxy层次结构中的代理服务器被赋予了父(parent)和子(child)的关系。下一个入口(inbound)代理(靠近服务器)被称为父代理,下一个出口(outbound)代理(靠近客户端)被称为子代理。

1、代理层次结构的内容路由

代理层次结构是静态的——代理1总是会将报文转发给代理2,代理2总是会将报文转发给代理3。但是,层次不一定非得是静态的。代理服务器可以根据众多因素,将报文转发给一个不断变化的代理服务器和原始服务器集。

访问代理会根据不同的情况将报文转发给父代理或原始服务器。

  • 如果所请求的对象属于一个付费使用内容分发服务的Web服务器,代理就会将请求发送给附近的一个缓存服务器,这个服务器会返回已缓存对象,或者如果它那儿没有的话,它会去取回内容。
  • 如果请求的是特定类型的图片,访问代理会将请求转发给一个特定的压缩代理,这个代理会去获取图片,然后对其进行压缩,这样通过到客户端的慢速Modem下载时,速度会更快一些。

2、这里还有几个动态选择父代理的例子。

  • 负载均衡:子代理可能会根据当前父代理上的工作负载级别来决定如何选择一个父代理,以均衡负载。
  • 地理位置附近的路由:子代理可能会选择负责原始服务器所在物理区域的父代理。
  • 协议/类型路由:子代理可能会根据URI将报文转发到不同的父代理和原始服务器上去。某些特定类型的URI可能要通过一些特殊的代理服务器转发请求,以便进行特殊的协议处理。
  • 协议/类型路由:子代理可能会根据URI将报文转发到不同的父代理和原始服务器上去。某些特定类型的URI可能要通过一些特殊的代理服务器转发请求,以便进行特殊的协议处理。
  • 基于订购的路由:如果发布者为高性能服务额外付费了,它们的URI就会被转发到大型缓存或压缩引擎上去,以提高性能。在不同的产品中,动态父路由逻辑的实现方式各有不同,包括使用配置文件、脚本语言和动态可执行插件等。

代理是如何获取流量的

客户端通常会直接与Web服务器进行通信,所以我们要解释清楚HTTP流量怎样才能首先流向代理。有四种常见方式可以使客户端流量流向代理。

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

总结

本篇主要涵盖以下内容:

  • 怎样将代理部署到网络中去;
  • 怎样将代理以层级方式连接在一起;
  • 怎样先将网络流量直接导入代理服务器中。

作者介绍
非职业「传道授业解惑」的开发者叶一一。
《趣学前端》、《CSS畅想》等系列作者。华夏美食、国漫、古风重度爱好者,刑侦、无限流小说初级玩家。
如果看完文章有所收获,欢迎点赞👍 | 收藏️ | 留言📝

【声明】本内容来自华为云开发者社区博主,不代表华为云及华为云开发者社区的观点和立场。转载时必须标注文章的来源(华为云社区)、文章链接、文章作者等基本信息,否则作者和本社区有权追究责任。如果您发现本社区中有涉嫌抄袭的内容,欢迎发送邮件进行举报,并提供相关证据,一经查实,本社区将立刻删除涉嫌侵权内容,举报邮箱: cloudbbs@huaweicloud.com
  • 点赞
  • 收藏
  • 关注作者

评论(0

0/1000
抱歉,系统识别当前为高风险访问,暂不支持该操作

全部回复

上滑加载中

设置昵称

在此一键设置昵称,即可参与社区互动!

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。

*长度不超过10个汉字或20个英文字符,设置后3个月内不可修改。