图解HTTP权威指南(四)| 代理
Captain_Li 人气:0作者简介
李先生(Lemon),高级运维工程师(自称),SRE专家(目标),梦想在35岁买一辆保时捷。喜欢钻研底层技术,认为底层基础才是王道。一切新技术都离不开操作系统(CPU、内存、磁盘)、网络等。坚持输入输出,记录自己学习的点滴,在平凡中坚持前行,总有一天会遇见不一样的自己。公众号:运维汪(ID:Leeeee_Li)。
一、什么是Web代理
Web代理(proxy)服务器是网络的中间实体。代理位于客户端和服务端之间,扮演“中间人”的角色,在各端点之间来回传送HTTP报文。某个客户端专用的代理为私有代理,众多客户端共享的代理称为公共代理。
二、Web代理和网关的区别
代理:连接的是两个或多个使用相同协议的应用程序。
网关:连接的是两个或多个使用不同协议的端点。
三、为什么使用代理
1、儿童过滤器
假如在一个学校,既要对教育站点访问无障碍,又要使用代理来组织对成人内容的访问。
2、文档访问控制
使用代理服务器在大量Web服务器和Web资源之间实现统一的访问控制策略。如
a)允许客户端1无限制地访问服务器A的新闻页面
b)客户端2可以无限制地访问互联网
c)在允许客户端3访问服务器B之前,需要输入账号密码
3、安全防火墙
防火墙代理提高安全性,代理服务器会在网络中的单一安全节点上限制哪些应用层协议的数据可以流入另一组织。还可以提供用来消除病毒的Web和E-mail代理使用的那种挂钩程序,对流量进行详细的检查。
4、Web缓存
代理缓存维护了常用的文档的本地副本,并将他们按需提供,以减少缓慢且昂贵的网络通信。
5、反向代理
代理可以假扮Web服务器,这些反向代理的代理接收发给Web服务器的真实请求,与Web服务器不同的是它们可以发起与其他服务器的通信,以便按需定位所请求的内容。
6、内容服务器
代理服务器可以作为“内容服务器”使用,根据因特网流量状况以及内容类型将请求导向特定的Web服务器。也可实现各种服务级别的请求,比如用户付费需要提高性能,内容路由器可以将请求转发到附近的复制缓存。
7、转码器
代理服务器在将内容发送给客户端之前,可以修改内容的主体格式。在这些数据表示法之间进行的透明转换被称为转码。如在传输GIF图片时,将其转换为JPEG图片;也可以对图片进行压缩。或者在传输文档的过程中将其转换成另一种语言(将英文文档转换为中文文档)。
8、匿名者
匿名者代理会主动从HTTP报文中删除身份特性(比如客户端IP地址、From首部、Referer首部、cookie、URI的session ID等),提高高度的私密性和匿名性。
四、代理服务器的位置
1、出口代理
将代理固定在本地网络的出口点,以便控制本地网络与互联网之间的流量。
2、访问入口代理
代理常被放在ISP(Internet Server Provider)互联网服务提供商访问点上,用以处理来自客户的聚合请求。ISP使用缓存代理来存储常用的文档副本,以提高用户的下载速度,降低因特网带宽耗费。
3、反向代理
代理通常会被部署在网络边缘,在Web服务器之前,作为替代物(反向代理)使用,它们可以处理所有传送给Web服务器的请求,并只在必要时向Web服务器请求资源。
4、网络交换代理
可以将具有足够处理能力的代理放在网络之间的因特网对等交换点上,通过缓存来减轻因特网节点的拥塞,并对流量进行监视。
五、代理的层级结构
可以通过代理层次结构将代理连接起来,代理层次结构的应用场景有:
1)负载均衡
子代理可能会根据当前父代理上的工作负载来决定如何选择一个负载均衡,达到负载均衡的作用
2)地理位置附近的路由
子代理可能会选择负责原始服务器所在物理区域的代理
3)协议/类型路由
子代理可能会根据URI将报文转发到不同的父代理和原始服务器上去
4)基于订购的路由
如果发布者为高性能额外付费了,他们的URI就会被转发到大型缓存或压缩引擎上去,以提高性能。
六、如何使客户端走向代理
客户端通常会直接与Web服务器进行通信,如何使得客户端的流量流向代理
1)修改客户端
将客户端配置为代理服务器,客户端就会将HTTP请求有意地直接发送给代理,而不是原始服务器。
2)修改网络
网络基础层设施通过若干技术手段,在客户端不知道或没有参与的情况下,拦截网络流量并将其导入代理。
3)修改DNS的命名空间
放在Web服务器的代理服务器(反向代理),会直接假扮Web服务器的名字和IP地址,这样所有的请求就会发送给这些反向代理服务器,而不得Web服务器。
4)修改Web服务器
将某些Web服务器配置为向客户端发送一条HTTP重定向命令(响应码305),将客户端请求重定向到一个代理上去,收到重定向命令后,客户端会与代理服务器进行通信。
七、追踪报文
1、Via首部
Via首部字段列出了与报文途径的每个中间节点有关的信息,报文每经过一个节点,都必须将这个中间节点添加到Via列表的末尾。
Via:1.1 proxy-62.irenes-isp.net, 1.0 cache.joes-hardware.com
Via首部字段用于记录报文的转发,诊断报文循环,标识请求、响应链上所有发送者的协议能力。
2、Via的语法
Via首部字段包含一个由逗号分隔的路标,每个路标都表示一个独立的代理服务器或网关。Via包括四个组件,一个可选的协议名(默认为HTTP),一个必选的协议版本,一个必选的节点名和一个可选的描述性注释。
Via:1.1 proxy-62.irenes-isp.net, 1.0 cache.joes-hardware.com
3、Via的请求和响应路径
请求和响应报文都会经过代理进行传输,因此请求和响应报文中都要有Via首部。请求和响应通常都是通过同一条TCP连接传送的,所以响应报文沿着与请求报文相同的路径回传。
4、Via与网关
有些代理会为非使用HTTP协议的服务器提供网关的功能,Via首部记录了这些协议的转换。
5、Trace方法
代理服务器可以在转发报文时对其进行修改。可以添加、修改或删除首部,也可以将主体部分转换成不同的格式。通过HTTP/1.1的TRACE方法,用户可以跟踪代理链传输的请求报文,观察报文经过了哪些代理,以及每个代理是如何对请求报文进行修改的。
八、学习交流
欢迎大家关注我的公众号,一起交流、学习。
加载全部内容