🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注
前言
在学习和应用网络服务
中,你会经常听见正向代理
和反向代理
这两个概念,很多人觉得很复杂,其实不然,首先要理解什么是正向代理
和反向代理
首先就要搞清楚什么是代理, 如果你使用过Fiddler、Charles
这样的工具,那么你肯定知道代理
是什么意思!
简单的说代理
在网络服务中就是帮助客户端
和服务器
进行信息沟通的中间件
, 而且在这个过程中,中间代理
还可以对信息数据进行一些处理
或修改
例如Charles
代理抓包工具如下图:
中间的Charles
就属于一个代理
那正向
和反向
代理又是什么呢! 这就要涉及到客户端
和服务端
了
正向代理模式(Forward proxy)
我们先来举个例子, 比如说当前访问某些网站应用的时候,通常网站服务器端都会记录下用户的IP地址
, 那么如果你不想被服务端察觉到你的IP地址
应该怎么办呢? 这个时候,你就可以想弄一台中间服务器
让它来帮你完成与目标服务端的请求!
通过对中间这台代理服务器
, 我们只需要在本地的电脑上设置一下这个代理服务器
的IP地址
和端口号
找到它,就能让它来转发用户的HTTP请求
和响应
,从而实现由代理服务器
来帮我们访问目标服务
,这样服务端也不会知道我们真正的用户IP地址
了!
如图
从上图中我们就可以看出来,只要我们把正向代理
这个服务
加以配置或者伪装成某个国家地区的IP地址
,那么这样服务端
最终也就只能知道正向代理服务
这里的IP地址
区域, 这对保护用户的隐私很有帮助, 也提高了安全性!
所以正向代理
其实面向的是客户端
如图
反向代理模式(Reverse proxy)
那如果你理解了正向代理
, 那反向代理
就很容易理解了,因为反向代理
和正向代理
是相反的!
正向代理
帮助代理客户端
,而反向代理
帮助代理服务端
我们来看下图:
如图
从上图中,我们可以看到反向代理服务器
会拦截外界客户端
的请求, 然后决定负责把访问请求
转发给服务端
,然后服务器
处理请求并将响应返回给反向代理服务器
,然后由反向代理服务器
将响应返回给客户端
比如: 当你打开一个网站的时候,反向代理服务器
就可以来决定请求
访问指定的服务器资源,并且也可以从指定的服务器中返回响应数据
到客户端, 其实这就是俗称的负载均衡
, 因为反向代理
是一种网络架构
,而负载均衡
是一种技术策略
,所以负载均衡
可以使用反向代理
来实现。
但从感觉上来说反向代理服务器
也一样位于客户端
和服务器
之间, 而且对于客户端
来说, 反向代理服务器
就像是目标服务器
一样, 客户端根本不知道真正的服务器地址在哪里, 相当于隐藏后端
服务器的真实地址!
所以反向代理
其实面向的是服务端
如图
从安全性来说具备反向代理
模式的服务器会更加安全,网络攻击者最多也只能针对反向代理服务器
而不能攻击到真正的服务器!
总而言之反向代理
就是一种代理服务器
, 它代理了目标服务器
去和客户端
进行HTTP请求与响应!
正向代理和反向代理之间的区别
其实我们在上面的图中也可以完全看清楚它们之间的核心区别
正向代理
面向客户端
反向代理
面向服务端
举个栗子
正向代理
一般是客户端
设置的,比如在自己的电脑上安装一个代理软件
, 然后服务器
不知道真正的客户端到底是谁,以为访问自己的就是真实的客户端
反向代理
一般是服务器
架设的,比如在服务器机器集群中部署一个反向代理服务器
用做请求和响应工作, 那么客户端
就不知道真正的服务器是谁,以为自己访问的就是真实的服务器。
从用途上讲正向代理
主要是用来解决一些访问限制问题, 比如我们熟知的科学上网
, 而反向代理
则是提高服务器安全性的一种架构方案,比如负载均衡、安全防护
等作用!
"👍点赞" "✍️评论" "收藏❤️"
欢迎一起交流学习❤️❤️💛💛💚💚
好玩 好用 好看
的干货教程可以
点击下方关注❤️
微信公众号❤️
说不定有意料之外的收获哦..🤗嘿嘿嘿、嘻嘻嘻🤗!
🌽🍓🍎🍍🍉🍇