一文说清楚正向代理与反向代理的区别

什么是正向代理?什么是反向代理?它们的区别是什么?看完本文就清楚了…

首先,从字面上理解,代理的意思是代替办理,就是一方委托另一方办事,在计算机网络的世界里,代理通常是指客户端与服务端之间的中介。

计算机网络中的代理又分为正向代理和反向代理,正向代理很简单,就是客户端不直接访问服务端,而是通过一个中间人访问(中间人先代替客户端向服务端获取到数据,再将获取到的数据返回给客户端),很容易理解吧,那很多人会问,为什么客户端要“脱了裤子放屁”,不直接访问服务端呢?通常有两种原因:

1.因某些你懂的原因,客户端所在网络限制访问服务端了;
2.因某些特殊原因,服务端不允许某些来源的客户端访问。

举个粟子:A村子和B村子关系不好,所以A村设了限制,不允许A村民去B村小卖部买玉米,或者B村子小卖部不卖玉米给A村民。但A村民又想要B村子小卖部玉米,那怎么办呢?A村民可以委托C村子的人代替自己去B村子买东西,带回来后再交给自己,这就是正向代理。示意图如下:

图片来源:自己画的
这种结构的特点是:服务端不知道自己的真正客户是谁,它接触的客户是代理,但客户是知道真正提供服务的是谁(是B小卖部而非代理),正向代理是客户端无法直接访问(或想匿名访问)服务端的解决方案, 委托方是客户端!

而关于反向代理,很多人都觉得难以理解,因为正常的思维,既然正向代理是客户端向服务端获取数据的中介,那反向很自然就应该是服务端向客户端获取数据的中介了,然鹅事实并非如此,他们是有很大差别的,这是理解的难点。先来看一下下面这张图:

图片来源:自己画的
B村有很多村民都生产玉米(假设生产的玉米是无差别的),但分别单独对外售卖玉米很麻烦,因为客户不知道哪家有,也不清楚哪家的量有多少,所以他们全部委托给B村小卖部销售(注意: 委托方是服务端!),由小卖部统一对外服务。买玉米的客户不清楚玉米是哪家的,只管直接向小卖部购买就可以了,这就是反向代理。

这种结构的特点是:客户端不知道谁是真正的服务端(供应商),反向代理往往会根据一定的策略将请求转发到最合适的服务器处理,例如按服务器闲忙情况分配,咦,听起来是不是很像负载均衡的策略?没错,反向代理经常应用于实现负载均衡场景,Nginx等Web服务器支持反向代理功能并被广泛应用于实现负载均衡。

总的来说:所以虽然这两种代理方式名字相近,但目的及应用场景上天差地别:

  • 从功能来看:
    正向代理是客户端不能(不便)直接访问服务端的解决方案
    反向代理是多个服务端统一对外提供服务的解决方案
  • 从目标客户角度看
    正向代理的委托方是客户端,代理向客户端(单次是1个)提供服务
    反向代理的委托方是服务端,代理向多个(通常是多个,也可以单个)服务端提供服务
  • 从可见性的角度来看
    正向代理对客户端可见,是客户端主动选择的结果(可选可不选,服务端只能被动选择),客户端可以选择直接访问(是否能访问得到是另一回事),也可以选择通过代理访问
    反向代理对客户端不可见,是客户端被动选择的结果(是服务端主动选择的结果),意思是:客户端是不知道目前访问的服务是否使用了反向代理的

PS:有时候,这两种代理方式会在一次网络请求中并存,如下图所示:

*图片来源:自己画的*

大家各司其职,是完全没有冲突的

小伙伴看懂了吗?

反向代理是什么意思?正向代理和反向代理的区别是什么?相关推荐

  1. android 反向进度条,Android progressBar 正向绘制与反向绘制

    image.png xml布局文件 android:id="@+id/progress02" android:layout_width="match_parent&quo ...

  2. DNS 服务与邮件服务器应用--配置DNS正向解析与反向解析

    配置DNS正向解析与反向解析: 什么叫正向解析和反向解析: 正向解析:根据主机名(域名)查找对应的 IP 地址. 反向解析:根据 IP 地址查找对应的主机名(域名).( 反向解析的作用是将用户提交的 ...

  3. 代理(proxy):正向代理,反向代理

    (1)正向代理 先接收来自客户端的请求消息,然后转到互联网中(有缓存的话效果会更好,以前发送的消息更快) 也就是说,正向代理是代理客户端(反向代理是代理服务器) 正向代理隐藏了真实的请求客户端,服务端 ...

  4. 使用ssh正向连接、反向连接、做socks代理的方法

    文章出处:http://dzmailbox.blog.163.com/blog/static/120534385201232642637847/ 最近才发现ssh有多么的强大! 在网上搜了半天,发现大 ...

  5. 红蓝对抗之隧道技术第二篇(reGeorg内网穿透、SSH隧道本地Socks代理、SSH远程转发、Earthworm Socks5代理、Tunna正向代理、ICMP隧道、DNS隧道、Frp穿透)

    文章目录 隧道应用 reGeorg内网穿透 SSH本地转发(正向) 场景一 场景二 SSH远程转发(反向) Earthworm Socks5代理 正向代理 反向代理 Tunna正向代理 ICMP隧道 ...

  6. 部署haproxy代理,搭建基于nginx的高性能反向代理群集

    目录 一.Haproxy概述.简介 (1)Haproxy简介 (2)Haproxy和LVS.Nginx的比较 (3)Haproxy的代理模式 二.利用Haproxy+nginx搭建web群集 实验环境 ...

  7. Web集群案例实战 -- Nginx 反向代理根据URL中的目录地址实现代理转发 -- 案例实战

    Nginx 反向代理根据URL中的目录地址实现代理转发 -- 案例实战 前言 一.需求背景 前言 本环境是基于 Centos 7.8 系统构建Nginx学习环境 具体构建,请参考 Nginx-1.18 ...

  8. 代理模式(Java版)-静态代理、JDK动态代理和CGLib动态代理

    代理模式前传 前几天有个小朋友问到我代理模式,这个我拿手的嘛.废话不多说,直接开讲?这是不可能的. 一般呢,讲模式之前呢,礼貌上都要讲个前传.象我这种老了根本不怕没有故事祭奠的人,随手一个前传开始. ...

  9. 机器学习概念 — 监督学习、无监督学习、半监督学习、强化学习、欠拟合、过拟合、后向传播、损失和优化函数、计算图、正向传播、反向传播

    1. 监督学习和无监督学习 监督学习 ( Supervised Learning ) 和无监督学习 ( Unsupervised Learning ) 是在机器学习中经常被提及的两个重要的学习方法. ...

  10. 【java项目实战】代理模式(Proxy Pattern),静态代理 VS 动态代理

    这篇博文,我们主要以类图和代码的形式来对照学习一下静态代理和动态代理.重点解析各自的优缺点. 定义 代理模式(Proxy Pattern)是对象的结构型模式,代理模式给某一个对象提供了一个代理对象,并 ...

最新文章

  1. 模拟物流快递系统程序设计java_路辉物流设备:大件快递自动分拣系统的模块化设计...
  2. 新浪微博注册用户超3亿 六成活跃者使用移动端
  3. 学院后勤报修系统php_如何有效提升医院医疗设备故障报修问题?
  4. 看奥运之四:“鸟巢”旁边的洋人求票者
  5. 微信小程序最常用的布局——Flex布局
  6. Theano+Keras开发环境搭建(最简单的教程)
  7. 类的使用经典案例使用类的成员函数显示时间、找出元素的最大值【C++面向对象编程】
  8. 数理统计复习笔记九——正态性检验
  9. Qt 将中文汉字转成拼音与简拼
  10. SolidWorks+thonny esp32 电磁控制,程序算法搞起来了,我的结构-仿真-电磁-控制-算法的学习之路
  11. 入手评测 华硕灵耀Pro16和联想YOGA 16s哪个好
  12. [推荐收藏]MAC地址完美攻略(教你如何防止IP被盗用及绑定IP)
  13. 物理仿真实验运用计算机什么用,电脑模拟与物理实验教学
  14. 百人计划 美术 1.1 美术理论基础
  15. 西门子1200PLC模板通讯程序,包含多种通讯Modbus-RTU(485),S7通讯
  16. CMD中的用户名和自己账户名不一致
  17. Maven(保姆级全详)新手入门
  18. 计算轮廓的特征参数(周长、面积、圆形度、周径比等)
  19. Linux之VMware中快照功能如何使用
  20. 推荐一些超好的学习网站

热门文章

  1. 女人假正经的十三种表现
  2. Onedrive不限速还有5T空间,且行且珍惜
  3. 文献阅读 | 利用体细胞的mtDNA的突变追踪细胞的分化命运
  4. CUDA11.4+VS2017+MATLAB2020a执行mexcuda遇到的问题及解决
  5. 恺撒密码的python实现介绍
  6. docer中运行crontab
  7. 一键重装系统后蓝屏怎么修复
  8. 仿剩余金额宝数字渐慢跳动效果
  9. Bandicam班迪录屏 高清录制视频软件
  10. 计算机游戏 英文作文,电脑游戏英语作文