首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >如何用面对对象思想和系统架构角度去理解正向代理和反向代理?

如何用面对对象思想和系统架构角度去理解正向代理和反向代理?

作者头像
Java深度编程
发布2021-07-23 15:32:33
4200
发布2021-07-23 15:32:33
举报
文章被收录于专栏:Java深度编程Java深度编程

大家在开发中进行需要使用到Nginx来实现反向代理,而对于正向代理和反向代理的理解,很多开发者还是模模糊糊,难以奇说其中的区别。尤其是在面试的时候,当面试官问道这个问题的时候,大部分初中级的开发者的回答都很难令面试官满意,所以今天我就写这偏文章,来为大家解说其中的思维。

1.正向代理

字面解释:

正向代理方式是指以客户端访问internet上的连接请求时,并不直接访问internet网站,而是先去访问指定的代理服务器,代理服务器接收请求后,然后将请求转发给需要访问的真实服务器,并将从服务器上得到的结果返回给客户端,此时代理服务器对外就表现为一个正向代理服务器。

应用场景:蓝灯翻墙。

2.反向代理

字面解释:

反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。

两者的相同性:

从字面解释来看,其实无论是正向代理,还是反向代理,他们都有相同的逻辑性,都是有一个代理服务器实现了代理客户端的请求转发,如果从这个层面来解释,他们的本质是一样的。所以并不能说正向代理和反向代理是相反的,这个“正”和“反”,并不是我们生活中左右相反的那种逻辑。

两者的不同性:

上面已经解释了,正向代理和反向代理具有相同的流程和逻辑性,只是我们换一个角度,从面对对象的思维,或系统架构的角度去看待,他们就有明显的区别了。

a.面对对象的不同:

首先从面对对象来说,正向代理针对的对象和客户端,通俗来说,是客户端自我主动设置了代理,客户端很清楚自己要代理的服务器是谁,还有最终访问的真实服务器是谁;而反向代理针对的对象是服务端的内部服务器,这个反向代理服务器并不是客户端指定的,客户端也没法去指定谁做代理,并且客户端也无法知晓最终要访问的服务器是谁,因为一切由这个服务端内部的代理服务器做了请求分发处理,所以反向代理这种方式更安全,真实的服务器都隐藏在内部,而不对外暴露。可以说反向代理方式对客户端而言是被动的,客户端并没有主动的想要去做代理;而正向代理往往是客户端主动要去做代理。这个主动与被动的关系,就好似一个正反的关系,因此把内部服务器做请求转发的方式称之为反向代理。

b.系统架构的不同

从系统架构层面上来看,正向代理的客户端和正向代理服务器可以看成是一个容器,真实服务器是另一个容器;而反向代理的客户端是一个独立存在的容器,反向代理服务器和真实的服务器是处在同一个容器。也正是这种架构图看起来有点相反的缘由,所以有了反向代理的概念。

以上关于正向代理和反向代理的解释,你学会了吗?欢迎大家留言评论。

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2021-06-26,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Java深度编程 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器服务
腾讯云容器服务(Tencent Kubernetes Engine, TKE)基于原生 kubernetes 提供以容器为核心的、高度可扩展的高性能容器管理服务,覆盖 Serverless、边缘计算、分布式云等多种业务部署场景,业内首创单个集群兼容多种计算节点的容器资源管理模式。同时产品作为云原生 Finops 领先布道者,主导开源项目Crane,全面助力客户实现资源优化、成本控制。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档