正向代理和反向代理详解(纯小白必看 最好懂的白话文教程)

article/2025/9/4 19:12:30

概要

习惯性的bb几句
本文主要介绍正向代理和反向代理的区别,如何区分,各自的好处,还有一些应用场景
主要是白话文的内容,不会有太多专业术语,主要是面向纯小白,做个解疑,
部分地方稍微不严谨,纯粹只为更好的理解,

(去年写了一篇有关于代理IP是什么东西的文章,
代理IP是什么意思?浏览器代理和代理服务器是什么(小白必看,看了必会,不看血亏),
感兴趣的也可以看看,推荐先看看,很好懂)
在这里插入图片描述

什么是代理

  • 介绍代理

回顾一下那篇介绍代理ip的文章,代理的精髓重在于
游戏代理,网购代购,某同城代跑腿,
代 主要在于一个"替别人干事" 的感觉
只不过互联网中,代理 这个名词稍微高级了一丢丢

为了方便接下来的理解,请一定要先熟悉这个:

  • C-S架构

c是客户端,client,n. [经] 客户;顾客;委托人
s是服务器,server,n. 服伺者;服勤者;计算机网络服务器;计算器主机;
百度百科的介绍就挺详细了服务器-客户机
必须理解了这个,才可以简单易懂的理解正向代理和反向代理的区别,所以我再多简单介绍几句
说白了,C-S就是一个客户和老板的关系,需要服务的一方和提供服务的一方关系,
买东西的是client,卖东西的server,买东西是一种需求,卖东西是满足别人的购物需求
浏览网页的人是client,搭建网页的人是server,浏览网页是一中获取信息的需求,做网页的人提供了信息提供的服务

本文不考虑B-S架构,虽然不严谨,但是对于理解正向代理和反向代理很有用
理解了C-S架构,理解了正向代理反向代理以后,自然会懂B-S架构是什么,
就好比高中物理说不存在向心力,那也只是在高中物理的范畴之内为了学生更好的理解而说的
还有就是先“不严谨的认为ip是每人都不同的”,理解了ip以后,再去理解内网和外网ip

区分正向代理和反向代理

代理的本质,就是"中介",主要是要搞懂,这个中介在代替client,还是代替server

“替真正的client”,向server申请服务的是正向代理
正向代理是client的行为,目的是为了伪造出"client身份"

“替真正的server”,给client提供服务的是反向代理
反向代理是server方的行为,目标是伪造出"server身份"

什么是正向代理

刚刚说了,伪造了client身份的,就是正向代理,来几个例子

​生活场景

一些什么情况需要伪造client身份呢:
比如,想买烟的未成年和不准卖烟给未成年的烟店老板,一个是client,一个是server
这个未成年需要买烟的话,就不能以自己的身份来买,所以他需要叫个代跑腿的成年小哥,
这个时候这个跑腿小哥就是未成年小伙伪造的"client",属于正向代理

互联网场景

我之前的那篇介绍代理IP的文章,就是非常典型的一个正向代理场景,
再发一遍链接代理IP是什么意思?浏览器代理和代理服务器是什么(小白必看,看了必会,不看血亏)

某用户小A,不想要某网站发现他的ip登录过,使用代理ip以后,他在互联网中的所作所为,就好像都是那个代理IP在做的,
代理ip代替着小A,互联网中的各个server们只知道代理ip来过,不知道小A来过
又比如一些网站禁止一个ip访问太频繁,但client方的小B又需要频繁获取这个网站的信息,那么"正向代理"的代理ip就起作用了,小B只需要频繁更换代理ip来伪装是很多client访问网站就行了。

什么是反向代理

正向代理是伪造的client身份,那么反向代理伪造出"server身份"的场景了

生活场景

先说下生活场景,
假如有这么一个生产车间,里面有价格高昂的各种加工设备,这个车间的服务是"拿到用户寄过来的材料,然后对材料进行加工后给客户",为了保证安全,车间安排在一个无人知晓的地下密室中,然后在人人能看到的地方建了一个"招待厅",再接受客户的材料时,需要先在招待厅验货,然后由招待厅秘密运输给地下密室车间去处理和加工,加工完以后通过一次招待厅把加工好的东西返给客户
这样的好处是:招待厅的搭建比车间肯定要简单,车间有各种机器,招待厅只要放几把"椅子",如果有一个招待厅被导弹炸了,车间还在,只需要再建一个招待厅,就可以继续工作,提供服务,而且不需要担心有些客户在材料里偷偷藏屎。

互联网场景

就拿上面的生活场景对比,很多互联网公司的网站,都是做了类似的处理的,用户在网站上的操作和数据,需要在某个重点服务器上进行计算和处理
这个重要的服务器就等同于"真正的生产车间",
所以就需要一个招待厅,一般的互联网公司都是用的Nginx服务器,
用户感觉自己的请求都是这个"招待厅-nginx服务器"处理的,但其实真正的server被隐藏起来了,
nginx是隐藏的server
这样就可以在nginx前台服务器上做些安全处理,比如"防止客户藏屎",对于一些疑似不安全的请求记录,就不转发到后台主服务器,
再比如如果有人炸掉了招待厅———"DDos"攻击导致服务器崩溃,主要生成环境没被破坏,可以快速搭建一个新的nginx服务器,nginx服务器搭建肯定比系统主环境服务器简单,
快速搭建的话,一般都有搭建脚本,用git或svn拉一下nginx配置文件,跑起来就恢复了,有些还在tx云或者al云上有对应的系统镜像,搭建更快

总结

首先正向代理和反向代理都是"总结,替人办事"的身份,主要区分在于,

正向代理伪造client,反向代理伪造server

另外两者的好处就是:
说道好处,那肯定就只是对自己而言的,

正向代理的好处是对client而言的,反向代理的好处是对server而言的

这么说还是有点绝对…但主要是这样的

client使用正向代理隐藏了自己的真实身份,server用反向代理保护了server的安全,

正向代理和反向代理在互联网中真的非常常见,可能只是有的注意不到那么多,
个人感觉比较经典的正向代理就是代理ip,反向代理就是 前台nginx转发后台主服务器的架构了,


http://chatgpt.dhexx.cn/article/De3RSaBE.shtml

相关文章

nginx代理(正向代理和反向代理)

正向代理 是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端(目的是为了保护客户端…

反向代理是什么意思?正向代理和反向代理的区别是什么?

一文说清楚正向代理与反向代理的区别 什么是正向代理?什么是反向代理?它们的区别是什么?看完本文就清楚了… 首先,从字面上理解,代理的意思是代替办理,就是一方委托另一方办事,在计算机网络的世…

正向代理和反向代理有什么区别?什么是正向代理?什么是反向代理?正向代理和反向代理详解。

一、正向代理: 当用户想访问某一网址时,用户先访问代理服务器,然后由代理服务器向目标网址发送请求最终将数据返回代理服务器,最后代理服务器将数据返回给用户这一过程我们称之为正向代理。 正向代理它代理了客户端,相…

正向代理和反向代理的区别

套用古龙武侠小说套路来说,代理服务技术是一门很古老的技术,是在互联网早期出现就使用的技术。一般实现代理技术的方式就是在服务器上安装代理服务软件,让其成为一个代理服务器,从而实现代理技术。常用的代理技术分为正向代理、反…

详解正向代理与反向代理

1.正向代理 1.1 概念 正向代理是一个位于客户端和目标服务器之间的代理服务器(中间服务器)。为了从目标服务器取得内容,客户端向代理服务器发送一个请求,并且指定目标服务器,之后代理向目标服务器转发请求&#xff0…

二叉树-翻转二叉树

题目 思路BFS 使用BFS遍历的时候交换 只需要对原有的BFS遍历时加上交换的代码即可(老三行)。 public TreeNode invertTree(TreeNode root) {public TreeNode invertTree(TreeNode root) {//root为空的情况要进行排除否则会在交换时出现空指针异常if(r…

力扣周赛 313 反转二叉树的奇数层(dfs镜像遍历 or bfs提取层节点)

题意: 对于一颗给定的二叉树,我们的任务是反转它的所有奇数层的节点的权值 val(根节点所在层为第 0 层),操作完后返回根节点 root。 思路: 思路一: dfs 镜像遍历:左子树按照左中…

二叉树左右子树的翻转

翻转一个二叉树,直观上看,就是把二叉树的每一层左右顺序倒过来。比如问题中的例子,第三层1-3-6-9经过变换后变成了9-6-3-1,顺序反过来就对了。 再仔细观察一下,对于上面的例子,根节点(root&…

算法-树-反转二叉树

问题 Write a function that takes in a Binary Tree and inverts it. In other words, the function should swap every left node in the tree for its corresponding (mirrored) right node. Each Binary Tree node has a value stored in a property called “value” and …

算法_二叉树_翻转二叉树

文章目录 翻转二叉树1.解法2.总结算法 翻转二叉树 leetcode链接 1.解法 解法思路: 想把二叉树翻转,其实仔细一看,就是把每个二叉树的节点的左右孩子翻转,这样总体效果就是把整个二叉树翻转了。 所以只需要通过一种遍历手段把…

Java 求解翻转二叉树

文章目录 一、题目二、题目分析三、递归法四、非递归法五、层序遍历六、总结一、题目 翻转一棵二叉树。 二、题目分析 题目要求翻转二叉树,其实只需要把每一个节点左右孩子交换(孩子下面的节点是一起交换的)即可 题目使用前序遍历和后序遍历都可,但是中序遍历不可以,因…

【LeetCode 6182 反转二叉树的奇数层】

题目描述 给你一棵 完美 二叉树的根节点 root ,请你反转这棵树中每个 奇数 层的节点值。 例如,假设第 3 层的节点值是 [2,1,3,4,7,11,29,18] ,那么反转后它应该变成 [18,29,11,7,4,3,1,2] 。反转后,返回树的根节点。 完美 二叉…

js 反转二叉树

什么是反转二叉树 二叉树的每个结点至多有两颗子树,不存在大于2个的节点,二叉树有左右之分,次序不能颠倒 初始数据 let list {id: "4",left: {id: "2",left: {id: "1",left: null,right: null,},right: {id: …

层序遍历,反转二叉树,对称二叉树

1.层序遍历 leetcode 一层层遍历二叉树 &#xff0c; 是广度优先搜索 class Solution { public:vector<vector<int>> levelOrder(TreeNode* root) {queue< TreeNode* > que;vector < vector < int > > result;if ( root NULL ) return result…

力扣226:反转二叉树

翻转二叉树 题目思路①思路①代码思路②思路②代码总结 题目 给你一颗二叉树的根节点root&#xff0c;请你翻转该二叉树&#xff0c;并且返回其根节点。 思路① 如何判定二叉树是否翻转&#xff1f; 左右子树需要交换&#xff0c;左右子树内部的左右子节点也需要交换位置。…

翻转二叉树-python

leetCode第226题 翻转二叉树 链接&#xff1a;https://leetcode-cn.com/problems/invert-binary-tree 给你一棵二叉树的根节点 root &#xff0c;翻转这棵二叉树&#xff0c;并返回其根节点。 示例 1&#xff1a; 输入&#xff1a;root [4,2,7,1,3,6,9] 输出&#xff1a;[4,…

iOS实现反转二叉树(前序遍历二叉树)

题目: Input: Output: 首先分析下这个二叉树,从上往下看发现这个树是把树上的数据进行了交换,但是仔细一看发现最后一排的1-3反转过去后变成了3-1.所以得出结论,这道题是左右子树进行了交换,用函数递归就能很容易实现了. ## OC版本 声明节点属性&#xff1a; #import &…

二叉树翻转实例

1.问题描述 Invert a binary tree.For example: to Google: 90% of our engineers use the software you wrote (Homebrew), but you can’t invert a binary tree on a whiteboard so fuck off. 问题来源于Leetcode https://leetcode.com/problems/invert-binary-tree/ 2.问题…

LeetCode 2415. 反转二叉树的奇数层

2415. 反转二叉树的奇数层 【DFS】这个和对称二叉树一样&#xff0c;也是用一个双节点参数的函数来遍历这棵二叉树&#xff0c;在遍历的过程中交换左右两个节点的值即可。 class Solution {// 10:57 5 // dfsvoid dfs(TreeNode left, TreeNode right, int t) {if (left null)…

反转二叉树(二叉树的镜像)

输入一个二叉树&#xff0c;输出其镜像。 如下图&#xff0c;即交换所有节点的左右子树。 这里提供两种思路&#xff1a;使用递归和不使用递归。 使用的二叉树定义如下&#xff1a; public class TreeNode {int val 0;TreeNode left null;TreeNode right null;public TreeN…