21 | 良心中间商:HTTP的代理服务
21 | 良心中间商:HTTP的代理服务
讲述:Chrono
时长10:34大小12.09M
代理服务
代理的作用
代理相关头字段
代理协议
小结
课下作业
赞 21
提建议
精选留言(49)
- -W.LI-2019-07-15代理会增加链路长度,在代理上做一些复杂的处理。会很耗费性能,增加响应时间。 1.随机 2.轮询 3.一致性hash 4最近最少使用 5.链接最少展开
作者回复: great!
共 4 条评论54 - BoyiKia2020-05-11老师,我发现前几节课,四次挥手的时候,是客户端主动先发 Fin信号, 今天实验结果,是源服务器,先给代理服务器发的 Fin信号。老师,我有点疑惑哈。到底是谁应该先发。还是说都可以呢。
作者回复: 这个是tcp协议的知识了,就是谁先断开连接的问题。 其实这个并没有强制要求客户端或者服务器先断开,通常都是客户端主动断开,但服务器也可以主动断开,比如超时、短连接、节约资源等等。 所以结论就是谁都可以,有空可以再补一下tcp的知识。
共 2 条评论20 - Demon2020-06-21很多场景下,使用代理的目的就是为了匿名,不让对方知道请求/响应的来源在哪儿。除了在测试环境分析技术问题的场景,现实业务中有需要在报文中携带层层代理信息的应用case吗?
作者回复: 当然有了,互联网上很少有直连网站的,都要经过层层代理,这中间就免不了用代理协议。 很多代理并不是为了匿名,而是为了缓存。
15 - 火车日记2019-07-161 补充几个,ip_hash 、最少连接数、最快连接数,根据场景应用 2 作为中转站,需要为上游和下游开启两个连接,大量并发请求,会出现性能瓶颈,应减少资源开销,加快响应速度,比如代理缓存,动静分离
作者回复: great!
12 - Long2020-02-23老师好,文中 "服务器的 IP 地址应该是保密的,关系到企业的内网安全,所以一般不会让客户端知道。" 是不是可以认为,域名所对应的IP地址和真实服务器的IP地址是不一样的呢?因为真实服务器的地址一般都是私网的IP地址.
作者回复: 这个里面其实很复杂,首先网站外面会有cdn,然后入口会有反向代理,再后面才可能是真实的业务服务器。 服务器也可以安装多个网卡,一个网卡对外,一个网卡对内,这样有两个ip地址,分别对外对内。
7 - lmingzhi2019-07-15老师,请问有什么检测http代理ip匿名性的手段? 是否只要检查请求头是否带有“X-Forwarded-For”和“X-Real-IP”及里面是否带有真实ip即可?
作者回复: 如果代理比较“善良”,就会用“X-Forwarded-For”和“X-Real-IP”告知客户端的真实ip,如果它是完全匿名,不提供这些字段,我们也没有办法,因为它就是一个真实的客户端。
5 - Maske2020-06-171.a 代理服务器与上下游的通信机制也是http协议,因此增加了传输中的数据泄漏和篡改风险,可以使用https解决。b 如果代理服务器发生故障,会影响客户端的正常访问,可以增加代理服务器的数量,并配置代理服务器负载均衡算法。c 由于多了代理服务器的请求响应过程,增加了从源客户端和源服务器之间的来回时间。 2.轮询,加权轮询,随机法,加权随机法,源地址哈希法,最小连接数法
作者回复: 说的挺好,这段时间学习得很勤奋啊,也要适当休息。
共 2 条评论3 - Aaron2020-05-29『因为通过“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 协议是附加在外面的,不会改动原始报文。
4 - 钱2020-03-291:你觉得代理有什么缺点?实际应用时如何避免? 代理代理就是找她人代替你去打理一些事情,让他人代办事情你必须交代好沟通好,那效率自然会低一些,另外,如果代理出问题了,那你的事自然也办不成了,所以,可能存在单点问题,不过一般还好。 2:你知道多少反向代理中使用的负载均衡算法?它们有什么优缺点? 随机——简单,是否均匀看随机情况 轮询(一般轮询、加权轮询)——相对简单,也会考虑机器资源和性能的均衡性 哈希(一般哈希、一致性哈希、带虚拟节点的一致性哈希)——相对复杂,要求越公平就会越复杂,而且适当考虑了请求 哈希槽,和redis类似 只有能使请求尽可能的高效分发就行,请教一下VPN和代理,本质是否差不多?展开
作者回复: 1.对,代理的问题一个是成本,另一个就是信任。 2.最常用的就是这些了。 3.vpn和代理是两回事,它是一个虚拟的链路,有点像隧道,中间没有代理这样的角色,是直通的。
4 - AKA三皮2020-03-27代理是个好东西,比如各种精细化的流量控制,灰度发布,同时微服务拆分后,服务治理的相关功能也可以下沉到代理去做,比如 限流、熔断。选个高性能的网络代理是王道,比如envoy
作者回复: 对,这个就是中间层的力量,也是软件开发的基本原则。
3 - sarah2020-02-06老师,对图中wireshark的抓包有个疑问: 每一次的http报文后面会跟着一个tcp报文,这个tcp报文是怎么产生的?作用是什么?例如,第一个http报文,HTTP GET/21-1 HTTP1.1后面的TCP 80–55061
作者回复: 这个是tcp协议的ack,表示收到报文的确认,如果你再多了解一些tcp的知识就会明白。
3 - 夏目2019-12-03老师,微服务里的网关算不算一个增强版的代理服务器呢
作者回复: 是的,可以算是一种微型的反向代理。
3 - 院长。2019-07-16老师后面会讲HTTP2.0吗
作者回复: 安全篇后的飞翔篇有http/2和http/3。
3 - 张三2020-04-11HAProxy是不是就是MuleSoft…
作者回复: haproxy是专门的http代理软件,功能很强大,和Mulesoft的差距比较大吧。
2 - FF2019-07-22haproxy 那个代理协议那一行要客户端自己加上去的 ?如果客户端把这个加到 x-forward-for 里面,不用代理协议,那不是也可以解决代理去修改头部的问题 ?重点都是客户端先加上去这些信息 。这样看代理协议没啥优势啊,或者不是为了解决减少中间代理再去修改头的问题 ?盼复,感谢。
作者回复: 代理协议的那一行是代理服务器加的,客户端不需要参与。 代理协议的优势是简单,比http头好解析好处理,这对于代理服务器来说就能够提高转发效率。 你后面的理解基本正确。
2 - 星星之火2019-07-16老师您好,请问综合考虑代理的各种情况(比如匿名代理,篡改请求头字段)之后,怎么才能保证在服务端获取客户端的真实ip呢?
作者回复: 这个无法保证,协议里的字段都是可以改的,只能靠代理的良心。 一般来说,用代理协议是比较可靠的。
共 2 条评论2 - 前端西瓜哥2019-07-15代理服务器如何连接源服务器?用 http1.0 短连接的效率不太好吧?集群一般都是局域网吗?
作者回复: 很多代理都是用1.0的,这个取决于代理自己,因为有缓存,所以短连接也不会太影响效率。 集群有局域网的,也有广域网的。
2 - 红宝书第四版88-9312022-02-071.正向代理隐藏了客户端,源服务器不知道发请求的是谁,代表是某科学上午工具 2.反向代码隐藏了源服务端,客户端不知道请求最终会由谁来处理,代表nginx
作者回复: awesome
1 - Geek_6ea9af2021-03-22老师,请问在配置了正向代理之后,对于真正服务端的域名解析是发生在客户端还是代理端?该代理服务器仅做请求转发。
作者回复: 既然是代理,显然就帮客户端做所有事情了。客户端直接与代理通信,用不到域名解析,由代理实现对外收发信息。 或者反过来想一下,如果客户端解析域名,那么就拿到了真实ip地址,就会直连外网,也就不会走代理了。
1 - xuan2020-07-20问题: 1."X-Forwarded-For”头的信息刚开始是客户端给的吗? 2.X-Forwarded-For在http头里,要修改就等于变动了原始的http报文,这个时候的修改动作发生在客户端还是代理服务器? 个人认为是客户端,两个动作应该都是在客户端
作者回复: 1.这个是代理服务器添加的,当然因为http协议很自由,客户端填也可以,但这就没有意义了。 2.这个头是为代理服务器准备的,含义是原始客户端,所以对于客户端来说就不需要这个头。
1