21 | 良心中间商:HTTP的代理服务
该思维导图由 AI 生成,仅供参考
代理服务
- 深入了解
- 翻译
- 解释
- 总结
HTTP代理服务就像一个24小时便利店,为HTTP通信引入了一个新的角色——代理服务器。代理服务器处于客户端和源服务器之间,提供代理服务,负责转发请求和响应。代理的作用包括负载均衡、健康检查、安全防护、加密卸载、数据过滤和内容缓存等功能,为HTTP协议增加了灵活性,实现客户端和服务器的双赢。代理相关头字段如Via、X-Forwarded-For和X-Real-IP用于标明代理身份和获取客户端真实IP地址。通过实验环境的抓包分析,可以清晰地看出代理与客户端、源服务器的通信过程。文章介绍了代理的基本概念、作用和相关头字段,为读者快速了解HTTP代理服务提供了全面的概览。 代理协议通过专门的“代理协议”(The PROXY protocol)解决了获取客户端真实IP地址的问题,避免了解析HTTP报文头的成本和修改原始报文的限制。该协议通过在HTTP报文前增加一行ASCII码文本来传递客户端的真实IP地址,提高了代理的转发性能和效率。 总结:HTTP代理服务为通信链路中的中间环节,提供了丰富的功能和灵活性,通过相关头字段和代理协议实现了获取客户端真实IP地址的需求。读者可以通过本文快速了解代理的作用和相关技术特点,为实际应用和进一步学习提供了基础知识。 课下作业:1. 代理的缺点是需要解析HTTP报文头和修改数据,可以通过使用专门的代理协议来避免这些问题。 2. 反向代理中使用的负载均衡算法有轮询、加权轮询、最小连接数等,它们各有优缺点,可以在实际应用中根据需求选择合适的算法。
《透视 HTTP 协议》,新⼈⾸单¥59
全部留言(51)
- 最新
- 精选
- -W.LI-代理会增加链路长度,在代理上做一些复杂的处理。会很耗费性能,增加响应时间。 1.随机 2.轮询 3.一致性hash 4最近最少使用 5.链接最少
作者回复: great!
2019-07-15457 - BoyiKia老师,我发现前几节课,四次挥手的时候,是客户端主动先发 Fin信号, 今天实验结果,是源服务器,先给代理服务器发的 Fin信号。老师,我有点疑惑哈。到底是谁应该先发。还是说都可以呢。
作者回复: 这个是tcp协议的知识了,就是谁先断开连接的问题。 其实这个并没有强制要求客户端或者服务器先断开,通常都是客户端主动断开,但服务器也可以主动断开,比如超时、短连接、节约资源等等。 所以结论就是谁都可以,有空可以再补一下tcp的知识。
2020-05-11222 - Demon很多场景下,使用代理的目的就是为了匿名,不让对方知道请求/响应的来源在哪儿。除了在测试环境分析技术问题的场景,现实业务中有需要在报文中携带层层代理信息的应用case吗?
作者回复: 当然有了,互联网上很少有直连网站的,都要经过层层代理,这中间就免不了用代理协议。 很多代理并不是为了匿名,而是为了缓存。
2020-06-2115 - 火车日记1 补充几个,ip_hash 、最少连接数、最快连接数,根据场景应用 2 作为中转站,需要为上游和下游开启两个连接,大量并发请求,会出现性能瓶颈,应减少资源开销,加快响应速度,比如代理缓存,动静分离
作者回复: great!
2019-07-1612 - Long老师好,文中 "服务器的 IP 地址应该是保密的,关系到企业的内网安全,所以一般不会让客户端知道。" 是不是可以认为,域名所对应的IP地址和真实服务器的IP地址是不一样的呢?因为真实服务器的地址一般都是私网的IP地址.
作者回复: 这个里面其实很复杂,首先网站外面会有cdn,然后入口会有反向代理,再后面才可能是真实的业务服务器。 服务器也可以安装多个网卡,一个网卡对外,一个网卡对内,这样有两个ip地址,分别对外对内。
2020-02-238 - lmingzhi老师,请问有什么检测http代理ip匿名性的手段? 是否只要检查请求头是否带有“X-Forwarded-For”和“X-Real-IP”及里面是否带有真实ip即可?
作者回复: 如果代理比较“善良”,就会用“X-Forwarded-For”和“X-Real-IP”告知客户端的真实ip,如果它是完全匿名,不提供这些字段,我们也没有办法,因为它就是一个真实的客户端。
2019-07-155 - Maske1.a 代理服务器与上下游的通信机制也是http协议,因此增加了传输中的数据泄漏和篡改风险,可以使用https解决。b 如果代理服务器发生故障,会影响客户端的正常访问,可以增加代理服务器的数量,并配置代理服务器负载均衡算法。c 由于多了代理服务器的请求响应过程,增加了从源客户端和源服务器之间的来回时间。 2.轮询,加权轮询,随机法,加权随机法,源地址哈希法,最小连接数法
作者回复: 说的挺好,这段时间学习得很勤奋啊,也要适当休息。
2020-06-1724 - Aaron『因为通过“X-Forwarded-For”操作代理信息必须要解析 HTTP 报文头,这对于代理来说成本比较高,原本只需要简单地转发消息就好,而现在却必须要费力解析数据再修改数据,会降低代理的转发性能。』 问:代理协议的 PROXY 不也是一个头吗?同样需要对 header 的操作。它的优势是不是只在于操作的内容比 "X-Forwarded-For" 少一点而已? 『另一个问题是“X-Forwarded-For”等头必须要修改原始报文,而有些情况下是不允许甚至不可能的(比如使用 HTTPS 通信被加密)』 问:为什么“X-Forwarded-For”等头必须要修改原始报文呢?不是很理解。烦请老师解释一下,谢谢。
作者回复: 1.proxy头在第一行,结构很简单,而X-Forwarded-For在http头里,要有复杂的解析,特别是当http头很大的时候,成本就高了。 2.同样的原因,X-Forwarded-For在http头里,要修改就等于变动了原始的http报文,而proxy 协议是附加在外面的,不会改动原始报文。
2020-05-294 - 钱1:你觉得代理有什么缺点?实际应用时如何避免? 代理代理就是找她人代替你去打理一些事情,让他人代办事情你必须交代好沟通好,那效率自然会低一些,另外,如果代理出问题了,那你的事自然也办不成了,所以,可能存在单点问题,不过一般还好。 2:你知道多少反向代理中使用的负载均衡算法?它们有什么优缺点? 随机——简单,是否均匀看随机情况 轮询(一般轮询、加权轮询)——相对简单,也会考虑机器资源和性能的均衡性 哈希(一般哈希、一致性哈希、带虚拟节点的一致性哈希)——相对复杂,要求越公平就会越复杂,而且适当考虑了请求 哈希槽,和redis类似 只有能使请求尽可能的高效分发就行,请教一下VPN和代理,本质是否差不多?
作者回复: 1.对,代理的问题一个是成本,另一个就是信任。 2.最常用的就是这些了。 3.vpn和代理是两回事,它是一个虚拟的链路,有点像隧道,中间没有代理这样的角色,是直通的。
2020-03-294 - AKA三皮代理是个好东西,比如各种精细化的流量控制,灰度发布,同时微服务拆分后,服务治理的相关功能也可以下沉到代理去做,比如 限流、熔断。选个高性能的网络代理是王道,比如envoy
作者回复: 对,这个就是中间层的力量,也是软件开发的基本原则。
2020-03-273