什么是反向代理服务器

article/2025/8/22 7:56:03

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

含义

‘反向代理服务器’ 有两个概念,一是‘代理服务器’,二是‘反向’

‘代理服务器’比较好理解,例如需要访问某网站,不想或不能直接访问,例如网络的原因、隐私的原因等,我们就连接一个代理服务器,这样对于这个网站来说,访问他的用户是这个代理服务器,而不是我们自己

‘反向’的意思我们没有通过代理服务器访问网站,但网站却在自己服务器前面加了一个代理,我们输入网址发起请求后,请求先到了这个代理服务器,代理服务器再把请求转给网站服务器

作用

之所以会出现反向代理服务器,就是因为他的作用非常大,随着网站的壮大,就必然要使用反向代理服务器

什么是反向代理服务器20150819112445128

主要有以下几种作用

(1)安全过滤

为了安全,不允许用户直接接触真实服务器,任何访问请求都要先到达反向代理服务器,反向代理服务器来进行验证、过滤等安全类操作,符合条件的请求才会被转发到真实服务器

例如最简单的场景:只有在IP白名单中的IP才能访问

(2)内容缓存

当访问量越来越大时,网站服务器对每个请求都需要进行处理,压力巨大,根据局部访问性原理,这么多请求中必然有很多是重复的,网站服务器做这些重复劳动很累

这时就需要反向代理服务器来分担一部分工作,反向代理服务器把一些常用的内容都缓存到自己身上,用户的请求先来到反向代理服务器,他看自己这有没有用户需要的内容,有就直接返回给用户,没有时才交给网站服务器来处理

这样就相当于网站服务器有了一个助理,帮他处理了很多重复性工作,减轻了压力

(3)负载均衡

当访问量越来越大时,一个网站服务器扛不住了,需要在添加N个服务器,那么当用户请求过来后,到底由那台服务器进行处理呢?

这时就需要在这N台服务器前面添加一个反向代理服务器,做为负载均衡器

用户请求先发到负载均衡器,他思考一下这个请求应该交给谁,想好后就转发过去,这样就让N台服务器均衡的处理请求了


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

相关文章

入门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 各种数据库的分页…

解决数据库查询语句where条件为空查询全部数据,不为空按照条件查询

问题:在用查询语句查询电影类型,电影年代,电影区域的时候,要返回全部的数据,就是where条件为空,返回所有的数据 解决:select * from 表 where (字段条件 or 条件‘’) 代码: const …

数据库内外联接查询语句

建立如下表并插入数据: create table s(sid varchar2(10) primary key,sname varchar2(50),sage number(30));insert into s values(111,小红,20);insert into s values(222,小红,20);insert into s values(333,小红,20);insert into s values(555,小红,20);create…

SQL Server数据库的查询语句

select version; #查询数据库的版本 select servername; #查询服务名 select host_name(); #查询主机名,如果是用navicat远程连接的话,主机名是本地的名字 select db_name(); #查询当前数据库名 select db_name(1); #查询第一个数据库名 select db_name(…