【网络服务】正向代理和反向代理到底是什么意思
🚀 个人主页 极客小俊
✍🏻 作者简介:程序猿、设计师、技术分享
🐋 希望大家多多支持, 我们一起学习和进步!
🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注


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

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

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

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

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

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


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

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

相关文章:
【网络服务】正向代理和反向代理到底是什么意思
🚀 个人主页 极客小俊 ✍🏻 作者简介:程序猿、设计师、技术分享 🐋 希望大家多多支持, 我们一起学习和进步! 🏅 欢迎评论 ❤️点赞💬评论 📂收藏 📂加关注 前言 在学习和…...
【算法】记忆化搜索
快乐的流畅:个人主页 个人专栏:《算法神殿》《数据结构世界》《进击的C》 远方有一堆篝火,在为久候之人燃烧! 文章目录 引言一、不同路径二、最长递增子序列三、猜数字大小 ||四、矩阵中的最长递增路径总结 引言 记忆化搜索&…...
博客系统多模块开发
创建工程 创建父工程 删除src目录,在pom.xml添加依赖: <!--统一版本 字符编码--><properties><maven.compiler.source>8</maven.compiler.source><maven.compiler.target>8</maven.compiler.target><project.b…...
pdf阅读器哪个好用?五款PDF阅读器大比拼
pdf阅读器哪个好用?在数字化时代,PDF文档因其跨平台、跨设备的便捷性,已成为工作、学习和生活中不可或缺的一部分。而一款优秀的PDF阅读器,则能极大地提升我们处理PDF文档的效率与体验。今天,就让我们一起探索五款备受…...
C#实现Queue的加锁和解锁
在C#中,可以使用lock语句来对队列进行加锁和解锁,以确保在多线程环境下的线程安全。以下是一个简单的示例: using System; using System.Collections.Generic; using System.Threading;public class ThreadSafeQueue<T> {private read…...
北京邮电大学人工智能考数据结构,均分370!北京邮电大学计算机考研考情分析!
北京邮电大学(Beijing University of Posts and Telecommunications),简称北邮,是中华人民共和国教育部直属、工业和信息化部共建的全国重点大学,位列国家“211工程”、“985工程优势学科创新平台”、“世界一流学科建…...
1. lambda初体验
首先声明一个函数式接口,就只接口内只有一个抽象方法 //函数式接口 public interface Factory {Object getObject();}接口实现类 public class SubClass implements Factory {Overridepublic Object getObject() {return new User();}}User类 public class User …...
C#之显示转换
在C#中显示转换分为三种本别是: 括号强转,parse法,convert法。下面就为大家介绍一下吧!!! 括号强转 作用: 一般情况下 将高精度的类型转换为低精度 语法: 变量类型 变量名 (转换的变量类型名称) 变量; …...
汇编原理(三)编程
源程序: 汇编指令:有对应的机器码与其对应 伪指令:无对应的机器码,是由编译器来执行的指令,编译器根据伪指令来进行相关的编译工作。 ex1:XXX segment、XXX ends这两个是一对成对使用的伪指令,且必须会被用…...
[MySQL数据库] Java的JDBC编程(MySQL数据库基础操作完结)
🌸个人主页:https://blog.csdn.net/2301_80050796?spm1000.2115.3001.5343 🏵️热门专栏:🍕 Collection与数据结构 (91平均质量分)https://blog.csdn.net/2301_80050796/category_12621348.html?spm1001.2014.3001.5482 🧀Java …...
绿色瓶装水“暗战”竞争越发激烈,华润饮料谋上市同时多地扩产能
《港湾商业观察》黄懿 4月23日,纯净水牌“怡宝”母公司华润饮料(控股)有限公司(下称“华润饮料”)向港交所主板提交上市申请,联席保荐人为中银国际、中信证券、美银美林、瑞银集团。 在华润饮料递表不久之…...
C语言之指针详解(4)
文章目录 一、回调函数二、qsort使用举例2.1使用qsort函数排序整型数据2.2使用qsort函数排序结构体数据 三、qsort函数的模拟实现 一、回调函数 首先我们先来了解一下什么是回调函数 回调函数通俗来讲就是一个通过函数指针调用的函数。 如果你把函数的指针(地址&am…...
0基础学习小红书博主IP特训营,37天 教你从小白到KOL(13节)
课程内容: 1 第一课:如何做好博主账号定位 .mp4 2 第一课作业,html 3 第二课:如何打造小红书爆款笔记(一)_.mp4 4 第二课:如何打造小红书爆款笔记(二).mp4 5 第二课作业,html 6 第三课:如何高效搭建选题库 .mp4 7 第三课作业,html 8 第四课:破解流量玄学&am…...
【openlayers系统学习】3.1-3.2彩色GeoTIFF图像渲染
一、彩色GeoTIFF图像渲染 Sentinel-2 卫星任务收集并传播覆盖地球陆地表面的图像,重访频率为 2 至 5 天。传感器收集多波段图像,其中每个波段都是电磁频谱的一部分。 2A 级 (L2A) 产品提供以下频段的表面反射率测量: BandDescriptionCentra…...
前端自动将 HTTP 请求升级为 HTTPS 请求
前端将HTTP请求升级为HTTPS请求有两种方式: 一、index.html 中插入meta 直接在首页 index.html 的 head 中加入一条 meta 即可,如下所示: <meta http-equiv"Content-Security-Policy" content"upgrade-insecure-requests&…...
辅助驾驶ADAS功能算法介绍
一、ADAS功能分类 按照行驶域划分,将ADAS功能分为行车功能、泊车功能和主动安全功能。 行车功能 ACC(Adaptive Cruise Control)自适应巡航控制TJA(Traffic Jam Assist)交通拥堵辅助LCC(Lane Centering Control)车道居中控制ICC(Integration Cruise Control)智能巡航系…...
Docker 安装kingbase V8r6
下载 官网下载,注意:这里下载 Docker 版本v8r6 安装 # 导入镜像 docker load -i kingbase.tar# 重命名 docker tag [image-name]:[tag] [new-image-name]:[new-tag]# 删除 docker rmi [image-name]:[tag]# 创建容器 docker run -tid \ --privileged \…...
Python 应用打包成 APK【全流程】
将 Python 应用打包成 APK。 文章目录 步骤 1: 安装 Buildozer 和其依赖Linux (Ubuntu) 环境下安装: 步骤 2: 创建你的 Python 应用步骤 3: 配置 Buildozer步骤 4: 打包成 APK总结 步骤 1: 安装 Buildozer 和其依赖 首先确保你的系统中已安装 Python 和 pip。接下来ÿ…...
jmeter之MD5加密接口请求教程
前言: 有时候在项目中,需要使用MD5加密的方法才可以登录,或者在某一个接口中遇到 登录获取token后才可以进行关联,下面介绍下遇到的常见使用 一、第一种方法:使用jmeter自带的函数助手digest 选择工具,选…...
R18 NTN中的RACH-less HO
在看R18 38.300时,发现NTN场景 增加了如下黄色字体的内容,R18 NTN支持了RACH-less HO,索性就简单看了看。 NTN RACH less HO相关的描述主要在38.331,38.213和38.321中。38.300中的描述显示:网络侧会通过RRCReconfiguration消息将RACH-less HO相关的配置下发给UE, 其中会包…...
MFC内存泄露
1、泄露代码示例 void X::SetApplicationBtn() {CMFCRibbonApplicationButton* pBtn GetApplicationButton();// 获取 Ribbon Bar 指针// 创建自定义按钮CCustomRibbonAppButton* pCustomButton new CCustomRibbonAppButton();pCustomButton->SetImage(IDB_BITMAP_Jdp26)…...
HTML 列表、表格、表单
1 列表标签 作用:布局内容排列整齐的区域 列表分类:无序列表、有序列表、定义列表。 例如: 1.1 无序列表 标签:ul 嵌套 li,ul是无序列表,li是列表条目。 注意事项: ul 标签里面只能包裹 li…...
汇编常见指令
汇编常见指令 一、数据传送指令 指令功能示例说明MOV数据传送MOV EAX, 10将立即数 10 送入 EAXMOV [EBX], EAX将 EAX 值存入 EBX 指向的内存LEA加载有效地址LEA EAX, [EBX4]将 EBX4 的地址存入 EAX(不访问内存)XCHG交换数据XCHG EAX, EBX交换 EAX 和 EB…...
在鸿蒙HarmonyOS 5中使用DevEco Studio实现录音机应用
1. 项目配置与权限设置 1.1 配置module.json5 {"module": {"requestPermissions": [{"name": "ohos.permission.MICROPHONE","reason": "录音需要麦克风权限"},{"name": "ohos.permission.WRITE…...
html css js网页制作成品——HTML+CSS榴莲商城网页设计(4页)附源码
目录 一、👨🎓网站题目 二、✍️网站描述 三、📚网站介绍 四、🌐网站效果 五、🪓 代码实现 🧱HTML 六、🥇 如何让学习不再盲目 七、🎁更多干货 一、👨…...
【Java学习笔记】BigInteger 和 BigDecimal 类
BigInteger 和 BigDecimal 类 二者共有的常见方法 方法功能add加subtract减multiply乘divide除 注意点:传参类型必须是类对象 一、BigInteger 1. 作用:适合保存比较大的整型数 2. 使用说明 创建BigInteger对象 传入字符串 3. 代码示例 import j…...
【Go语言基础【13】】函数、闭包、方法
文章目录 零、概述一、函数基础1、函数基础概念2、参数传递机制3、返回值特性3.1. 多返回值3.2. 命名返回值3.3. 错误处理 二、函数类型与高阶函数1. 函数类型定义2. 高阶函数(函数作为参数、返回值) 三、匿名函数与闭包1. 匿名函数(Lambda函…...
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join
纯 Java 项目(非 SpringBoot)集成 Mybatis-Plus 和 Mybatis-Plus-Join 1、依赖1.1、依赖版本1.2、pom.xml 2、代码2.1、SqlSession 构造器2.2、MybatisPlus代码生成器2.3、获取 config.yml 配置2.3.1、config.yml2.3.2、项目配置类 2.4、ftl 模板2.4.1、…...
2025年渗透测试面试题总结-腾讯[实习]科恩实验室-安全工程师(题目+回答)
安全领域各种资源,学习文档,以及工具分享、前沿信息分享、POC、EXP分享。不定期分享各种好玩的项目及好用的工具,欢迎关注。 目录 腾讯[实习]科恩实验室-安全工程师 一、网络与协议 1. TCP三次握手 2. SYN扫描原理 3. HTTPS证书机制 二…...
代码规范和架构【立芯理论一】(2025.06.08)
1、代码规范的目标 代码简洁精炼、美观,可持续性好高效率高复用,可移植性好高内聚,低耦合没有冗余规范性,代码有规可循,可以看出自己当时的思考过程特殊排版,特殊语法,特殊指令,必须…...
