🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注


前言
在学习和应用网络服务中,你会经常听见正向代理和反向代理 这两个概念,很多人觉得很复杂,其实不然,首先要理解什么是正向代理和反向代理 首先就要搞清楚什么是代理, 如果你使用过Fiddler、Charles这样的工具,那么你肯定知道代理是什么意思!
简单的说代理在网络服务中就是帮助客户端和服务器进行信息沟通的中间件, 而且在这个过程中,中间代理还可以对信息数据进行一些处理或修改
例如Charles代理抓包工具如下图:

中间的Charles就属于一个代理 那正向和反向 代理又是什么呢! 这就要涉及到客户端和服务端了
正向代理模式(Forward proxy)
我们先来举个例子, 比如说当前访问某些网站应用的时候,通常网站服务器端都会记录下用户的IP地址, 那么如果你不想被服务端察觉到你的IP地址应该怎么办呢? 这个时候,你就可以想弄一台中间服务器让它来帮你完成与目标服务端的请求!
通过对中间这台代理服务器, 我们只需要在本地的电脑上设置一下这个代理服务器的IP地址和端口号找到它,就能让它来转发用户的HTTP请求和响应,从而实现由代理服务器来帮我们访问目标服务,这样服务端也不会知道我们真正的用户IP地址了!
如图

从上图中我们就可以看出来,只要我们把正向代理这个服务加以配置或者伪装成某个国家地区的IP地址,那么这样服务端最终也就只能知道正向代理服务这里的IP地址区域, 这对保护用户的隐私很有帮助, 也提高了安全性!
所以正向代理其实面向的是客户端
如图

反向代理模式(Reverse proxy)
那如果你理解了正向代理, 那反向代理就很容易理解了,因为反向代理和正向代理是相反的!
正向代理帮助代理客户端,而反向代理帮助代理服务端
我们来看下图:
如图

从上图中,我们可以看到反向代理服务器会拦截外界客户端的请求, 然后决定负责把访问请求转发给服务端,然后服务器处理请求并将响应返回给反向代理服务器,然后由反向代理服务器将响应返回给客户端
比如: 当你打开一个网站的时候,反向代理服务器就可以来决定请求访问指定的服务器资源,并且也可以从指定的服务器中返回响应数据到客户端, 其实这就是俗称的负载均衡, 因为反向代理是一种网络架构,而负载均衡是一种技术策略,所以负载均衡可以使用反向代理来实现。
但从感觉上来说反向代理服务器也一样位于客户端和服务器之间, 而且对于客户端来说, 反向代理服务器就像是目标服务器一样, 客户端根本不知道真正的服务器地址在哪里, 相当于隐藏后端服务器的真实地址!
所以反向代理其实面向的是服务端
如图

从安全性来说具备反向代理模式的服务器会更加安全,网络攻击者最多也只能针对反向代理服务器而不能攻击到真正的服务器!
总而言之反向代理就是一种代理服务器, 它代理了目标服务器去和客户端进行HTTP请求与响应!
正向代理和反向代理之间的区别
其实我们在上面的图中也可以完全看清楚它们之间的核心区别
正向代理面向客户端反向代理面向服务端
举个栗子
正向代理一般是客户端设置的,比如在自己的电脑上安装一个代理软件 , 然后服务器不知道真正的客户端到底是谁,以为访问自己的就是真实的客户端
反向代理一般是服务器架设的,比如在服务器机器集群中部署一个反向代理服务器用做请求和响应工作, 那么客户端就不知道真正的服务器是谁,以为自己访问的就是真实的服务器。
从用途上讲正向代理主要是用来解决一些访问限制问题, 比如我们熟知的科学上网, 而反向代理则是提高服务器安全性的一种架构方案,比如负载均衡、安全防护等作用!


"👍点赞" "✍️评论" "收藏❤️"
欢迎一起交流学习❤️❤️💛💛💚💚

好玩 好用 好看的干货教程可以
点击下方关注❤️
微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇




















