什么是反向代理(代理服务器解释

article/2025/8/22 7:53:46

什么是反向代理(reverse proxy)?

A reverse proxy protects web servers from attacks and can provide performance and reliability benefits. Learn more about forward and reverse proxies.

反向代理是位于 Web 服务器前面的服务器,将客户端(例如 Web 浏览器)请求转发到这些 Web 服务器。 反向代理通常用于帮助提高安全性、性能和可靠性。 为了更好地理解反向代理的工作原理以及它可以提供的好处,让我们首先定义什么是代理服务器。

什么是代理服务器(proxy server)?

转发代理,通常称为代理、代理服务器或 Web 代理,是位于一组客户端计算机前面的服务器。 当这些计算机向 Internet 上的站点和服务发出请求时,代理服务器会拦截这些请求,然后像中间人一样代表这些客户端与 Web 服务器通信。

例如,让我们命名参与典型转发代理通信的 3 台计算机:

A:这是用户的家用电脑
B:这是一个转发代理服务器
C:这是一个网站的源站(存储网站数据的地方)

Forward Proxy Flow

在标准的 Internet 通信中,计算机 A 会直接联系计算机 C,客户端向源服务器发送请求,源服务器响应客户端。 当转发代理到位时,A 将改为向 B 发送请求,然后 B 将请求转发给 C。C 然后向 B 发送响应,B 将响应转发回 A。

为什么会有人将这个额外的中间人添加到他们的 Internet 活动中? 人们可能想要使用正向代理有几个原因:

  • 为了避免国家或机构的浏览限制——一些政府、学校和其他组织使用防火墙来让他们的用户访问有限版本的互联网。 转发代理可用于绕过这些限制,因为它们让用户连接到代理而不是直接连接到他们正在访问的站点。
  • 阻止访问某些内容 - 相反,也可以设置代理来阻止一组用户访问某些站点。 例如,学校网络可能被配置为通过启用内容过滤规则的代理连接到 Web,拒绝转发来自 Facebook 和其他社交媒体网站的响应。
  • 为了在网上保护他们的身份——在某些情况下,普通互联网用户只是希望增加在线匿名性,但在其他情况下,互联网用户居住的地方政府可能会对持不同政见者施加严重后果。 在网络论坛或社交媒体上批评政府可能会导致这些用户被罚款或监禁。 如果这些持不同政见者之一使用转发代理连接到他们发布政治敏感评论的网站,则用于发布评论的 IP 地址将更难追溯到持不同政见者。 只有代理服务器的 IP 地址是可见的。

反向代理有何不同?

反向代理是位于一个或多个 Web 服务器前面的服务器,拦截来自客户端的请求。 这与前向代理不同,前向代理位于客户端前面。 使用反向代理,当客户端向网站的原始服务器发送请求时,这些请求会在网络边缘被反向代理服务器拦截。 然后反向代理服务器将向源服务器发送请求并接收来自源服务器的响应。

正向和反向代理之间的区别很微妙但很重要。 一种简化的总结方式是说转发代理位于客户端前面,并确保没有源服务器直接与该特定客户端通信。 另一方面,反向代理位于源服务器前面,确保没有客户端直接与该源服务器通信。

再一次,让我们通过命名所涉及的计算机来说明:

D:任意数量的用户家用电脑
E:这是一个反向代理服务器
F:一台或多台源站

Reverse Proxy Flow

通常,来自 D 的所有请求都将直接发送给 F,F 会将响应直接发送给 D。使用反向代理,来自 D 的所有请求将直接发送给 E,E 将其请求发送给 F 并从 F 接收响应。E 将 然后将适当的响应传递给 D。

下面我们概述了反向代理的一些好处:

  • 负载平衡 - 一个每天都有数百万用户的热门网站可能无法使用单个源服务器处理其所有传入站点流量。 相反,站点可以分布在不同服务器池中,所有服务器都处理对同一站点的请求。 在这种情况下,反向代理可以提供负载平衡解决方案,将传入流量平均分配给不同的服务器,以防止任何单个服务器过载。 如果一台服务器完全失效,其他服务器可以加紧处理流量。
  • 防止攻击——有了反向代理,网站或服务永远不需要透露其原始服务器的 IP 地址。 这使得攻击者更难利用针对他们的有针对性的攻击,例如 DDoS 攻击。 相反,攻击者只能针对反向代理,例如 Cloudflare 的 CDN,后者将具有更严格的安全性和更多资源来抵御网络攻击。全球服务器负载平衡 (GSLB) - 在这种负载平衡形式中,网站可以分布在全球的多台服务器上,反向代理会将客户端发送到地理位置最接近它们的服务器。 这减少了请求和响应需要传输的距离,从而最大限度地减少了加载时间。
  • 缓存 - 反向代理还可以缓存内容,从而提高性能。 例如,如果巴黎的用户访问洛杉矶的 Web 服务器的反向代理网站,用户可能实际上连接到巴黎的本地反向代理服务器,然后必须与洛杉矶的源服务器通信。代理服务器 然后可以缓存(或暂时保存)响应数据。 随后浏览该站点的 Parisian 用户将从 Parisian 反向代理服务器获取本地缓存版本,从而获得更快的性能。
  • SSL 加密 - 为每个客户端加密和解密 SSL(或 TLS)通信对于源服务器来说计算量很大。 反向代理可以配置为解密所有传入请求并加密所有传出响应,从而释放源服务器上的宝贵资源。

如何实现反向代理

一些公司构建自己的反向代理,但这需要大量的软件和硬件工程资源,以及对物理硬件的大量投资。 获得反向代理的所有好处的最简单且最具成本效益的方法之一是注册 CDN 服务。 例如,Cloudflare CDN 提供上面列出的所有性能和安全功能,以及许多其他功能。

Reference: What is a reverse proxy? | Proxy servers explained


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

相关文章

反向代理服务器

反向代理服务器的概念 反向代理服务器位于用户与目标服务器之间,但是对于用户而言,反向代理服务器就相当于目标服务器,即用户直接访问反向代理服务器就可以获得目标服务器的资源。同时,用户不需要知道目标服务器的地址&#xff0…

超全Nginx反向代理服务器原理+实战篇

文章目录 1.Nginx简介和安装部署1.1.什么是Nginx1.2.Nginx的用途1.3.正向代理服务器1.4.反向代理服务器1.5.nginx安装部署1.6.线上访问服务器应用流程解析1.7.本地虚拟机配置宿主机域名映射2.Nginx核心基础知识2.1.Nginx目录结构2.2.Nginx核心配置文件2.3.Nginx搭建前端静态服务…

什么是反向代理服务器

我们常会看到‘反向代理服务器’这个名词,例如常看到文章上说 nginx 是一个反向代理服务器、varnish 是一个反向代理服务器 …… 下面就了解下这个概念 含义 ‘反向代理服务器’ 有两个概念,一是‘代理服务器’,二是‘反向’ ‘代理服务器’比…

入门Nginx反向代理服务器

前言 博主最近学习了Nginx,故想通过撰写博客的方式加强对知识的认识和记忆,所涉及知识浅薄,如有错误,敬请指正 一.Nginx简介 Nginx (engine x) 是一个高性能的HTTP和反向代理web服务器;其特点是占有内存少&#xff0…

推导大O阶方法

1、用常数1取代运行时间中的所有加法常数; 2、只保留最高阶项; 3、去除最高阶项的常数; 常数阶是O(1); 线性阶是O(n); 对数阶是O(logn); 平方阶是O&…

大O算法复杂度表示

序言:算法的时间复杂度和空间复杂度都是用“ 大O表示法” 来表示的。其中O是个常量。 常见的 排序算法的时间复杂度: 冒泡排序、插入排序、希尔排序、选择排序的时间复杂度是O(n^2); 快速排序的时间复杂度是 O&#…

数据结构学习笔记:算法复杂度的度量之“大O记号”

分析算法复杂度的非常重要的方法:大O记号!! 下面来让我们看一下到底什么是大O记号 举个例子: 用一个直尺去评价算法复杂度,上面的刻度就相当于大O记号,我们不一定要一味的强调刻度的精细程度,没…

算法复杂度渐进符号(大O、Ω和θ)的个人理解

做软考习题时,碰到了这样的一道题: 关于算法复杂度渐进符号(O、Ω、θ),详细解释可参考: 【双语字幕】什么是算法复杂度渐进符号?阿布老师算法课11 这里节选总结了视频的重点内容,…

数据结构考研:大O表示法最浅显易懂且详细深入的解释及与小o表示法的区别(十分钟必懂)

大O表示法的背景 作为软件工程专业的学生,在我们学习数据结构的时候,总是会碰见对各种算法时间复杂度和空间复杂度的大O表示法的描述。我们只是将信将疑的用着,并不知道大O表示法的准确含义,今天博主李同学在查阅各方资料后进行详…

算法的时间复杂度(大O表示法)

首先我们先来看个例子, 我想找个1~100的数字,你的目标是以最少的次数猜到这个数字。你每次猜测后,我会说小了、大了或对了。下面我们来看下两种简单的方法(方法有很多种),再来引入算法的运行时间&#xff0…

算法时间复杂度分析——大O、大Ω、大θ、小o,小ω

最近开始转战传统算法分析的研究工作了,重新拾起以前学过的一些内容。 目录 一、概述 二、对常见的Ο和Ω进行分析 2.1 大O表示法 2.2 大Ω表示法 三、P问题,NP问题,NP-hard问题,NPC问题 3.1 P问题和NP问题 3.2 NPC问题和N…

复杂度分析(大O表示法)

复杂度分析 前文提要 本文完完全全引用极客时间的文章《数据结构与算法之美》,作者王争。 数据结构是作为程序猿绕不过的一道坎,所以萌生了学习的想法,试读了几篇文章后发现讲的很好,也有很多人订阅,于是不回头的走…

big O notation - 大 O 表示法

big O notation - 大 O 表示法 Big O notation (with a capital letter O, not a zero), also called Landau’s symbol. 大 O 表示法 (大写字母 O,不为零),也称为 Landau’s symbol。 Big O notation is a mathematical notation that describes the l…

算法分析:大O符号/大Ω符号/大Θ符号/小o符号/小w符号

感谢作者分享,原文链接:http://blog.csdn.net/u012816041/article/details/49888631 大O,渐进表示法,接下来我尝试用最简单的方式进行说明。 学习算法我经常听到这个词汇,我一开始很难理解,什么鬼&#xff…

算法分析—大O、大Ω、大θ

前言 在算法的学习中,最开始便是要学习算法的分析。学习算法分析时,我们便会接触到这么几个符号:大O、大Ω、大θ,常常让人难以理解。 在通常的算法分析时,我们可以明白,在输入规模较小,各种算…

算法分析——大O标记法

目录 一. 运行时间 二. 大O 表示法 2.1 示例 三. 总结 五. 扩展 一. 运行时间 每次介绍算法时,我们都将讨论其运行时间。一般而言,应选择效率最高的算法,以最大限度地减少运行时间或占用空间。 可是,如果代码都还没有运行&a…

Oracle数据库查询语句

1 oracle数据库查询表的所有数据–select * from 表名;(* 代表所有) 2 oracle数据库查询表中指定字段的值–select 字段名1,字段名2,……from 表名; 3 oracle数据库往表中添加数据信息–(添加信息使用inser…

Access数据库的查询

内容很简单,我搭建access数据库就是为了简单测试access语句的对错,以及学习access数据库的语法。 1.打开access数据库。 2.主页->空数据库 3.创建数据 4.创建->查询设计 5.【显示表】中的【表】【查询】【两者都有】,都可以。点击添加…

数据库查询语句SQL中like、%、-的区别

数据库查询语句SQL中like、%、-的区别 数据库查询语句SQL中like、%、-的区别 %百分号通配符:表示任何字符出现任意次数(可以是0次) SQL 语句选取 name 以字母 "k" 结尾的所有客户: SELECT * FROM Websites WHERE name LIKE %k; 执行输出结果: 下划线通配符:表示…

使用oracle数据库分页查询语句,各种数据库的分页查询语句

各种数据库的分页查询语句 1.oracle数据库分页select * from (select a.*,rownum rc from 表名 where rownum=endrow) a where a.rc=startrow2.DB2数据库分页Select * from (select rownumber() over() as rc,a.* from (select * from 表名 order by 列名) as 各种数据库的分页…