发表于: 2025-06-03 20:31:40
0 41
今天完成的任务:学习深度思考。
25.什么叫反向代理?为什么要使用反向代理?
在讲反向代理前,先了解下正向代理,举个栗子,某位同学需要要去谷歌查找资料,但是谷歌被墙了,怎么办呢,这个时候就是要用到正向代理了,这位同学通过上国外的代理服务器,让代理服务器代理自己去向谷歌请求,谷歌返回请求的数据,通过代理服务器转交给这位同学,这就实现了科学上网。vpn就是一个正向代理的栗子,其中的代理服务器扮演一个重要的角色,帮助这位同学去请求谷歌,而谷歌并不知道代理服务器后是谁。
反向代理,则和正向代理不同,将正向代理的代理服务器调换一下角色,转换成帮助服务器端隐藏身份,就变成了某同学上网站,通过代理服务器能够访问到许多的资源,而不知道这些资源来自那些服务器。
1.反向代理是什么?
反向代理是代理服务器的一种。服务器根据客户端的请求,从其关系的一组或多组后端服务器(如Web服务器)上获取资源,然后再将这些资源返回给客户端,客户端只会得知反向代理的IP地址,而不知道在代理服务器后面的服务器集群在哪里
反向代理代理了真实的服务端,需要一个代理服务器(负载均衡设备)来分发用户请求,其中就有Nginx、Tengine、Apache HTTP Server、Varnish cache等等。
2、为什么要使用反向代理?
反向代理的主要作用:
①对客户端隐藏真实的服务器(集群)的ip地址
②安全:作为应用层防火墙,为网站提供对基于web的攻击行为的防护,更容易排查恶意软件等,
③为后端服务器(集群)统一提供加密和SSL加速等
④负载均衡,如果服务器集群中有负荷较高的服务器,可通过url重写,根据连线请求从负荷较低的服务器获取所需的相同资源
⑤对于静态内容及短时间有大量访问请求的动态内容提供缓存服务。
⑥对一些内容进行压缩,以节约带宽或为网络带宽不佳的网络提供服务
⑦减速上传
⑧为在私有网络下的服务器集群提供NAT穿透及外网发布服务
⑨提供HTTP访问认证
Nginx服务器
Nginx是一款轻量级的web反向代理服务器及电子邮件代理服务器,由伊戈尔·塞索耶夫创建并于2004年首次公开发布。
Nginx强大的并发能力,在官方的测试中,能够支持五万个并行连接。
特点具有运行资源少,稳定性高,整体采用模块化设计,有丰富的模块库及第三方模块库。
正向代理与反向代理的区别
正向代理代理的是客户端
反向代理代理的是服务器端
反向代理是结合DNS的一类延伸应用
那么DNS是什么?
DNS叫做域名系统,是互联网的一项服务,作为将域名和ip地址相互映射的一个分布式数据库,能够使人更方便地访问互联网
早期的域名必须以英文句号结尾,这样DNS才能够进行域名解析,如今DNS服务器已经可以自动补上结尾的句号。
DNS查询有两种方式:递归和迭代。DNS客户端设置使用的DNS服务器一般是递归服务器,而DNS服务器之间一般采用迭代查询方式
26.Nginx的作用是什么,在WEB服务前端配置Nginx的好处是什么,除了Nginx,还有别的反向代理服务器吗?
Nginx (engine x) 是一个高性能的HTTP和反向代理服务,也是一个IMAP/POP3/SMTP服务。Nginx是由伊戈尔·赛索耶夫为俄罗斯访问量第二的Rambler.ru站点(俄文:Рамблер)开发的,第一个公开版本0.1.0发布于2004年10月4日。
其将源代码以类BSD许可证的形式发布,因它的稳定性、丰富的功能集、示例配置文件和低系统资源的消耗而闻名。2011年6月1日,nginx 1.0.4发布。
Nginx是一款轻量级的Web 服务器/反向代理服务器及电子邮件(IMAP/POP3)代理服务器,并在一个BSD-like 协议下发行。其特点是占有内存少,并发能力强,事实上nginx的并发能力确实在同类型的网页服务器中表现较好,中国大陆使用nginx网站用户有:百度、京东、新浪、网易、腾讯、淘宝等。
1.Nginx是什么?
Nginx就是反向代理服务器。
首先我们先来看看什么是代理服务器,代理服务器一般是指局域网内部的机器通过代理服务发送请求到互联网上的服务器,代理服务器一般作用于客户端。比如GoAgent,FQ神器。
2.反向代理和正向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受internet上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给internet上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
正向代理,意思是一个位于客户端和原始服务器(origin server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端才能使用正向代理。
客户端 \ / 服务器
\ /
客户端—— 正向代理————反向代理 ——服务器
/ \
客户端 / \ 服务器
介绍 说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道;
此时就设计到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理操作过程;如同生活中的专卖店~客人到adidas专卖店买了一双鞋,这个专卖店就是代理,被代理角色就是adidas厂家,目标角色就是用户
正向代理
在如今的网络环境下,我们如果由于技术需要要去访问国外的某些网站,此时你会发现位于国外的某网站我们通过浏览器是没有办法访问的,此时大家可能都会用一个操作FQ进行访问,FQ的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们!
上述这样的代理模式称为正向代理,正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。
反向代理
多个客户端给服务器发送的请求,nginx服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。此时~请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,nginx扮演的就是一个反向代理角色
反向代理,主要用于服务器集群分布式部署的情况下,反向代理隐藏了服务器的信息
3.负载均衡
我们已经明确了所谓代理服务器的概念,那么接下来,nginx扮演了反向代理服务器的角色,它是以依据什么样的规则进行请求分发的呢?不用的项目应用场景,分发的规则是否可以控制呢?
这里提到的客户端发送的、nginx反向代理服务器接收到的请求数量,就是我们说的负载量
请求数量按照一定的规则进行分发到不同的服务器处理的规则,就是一种均衡规则
所以,将服务器接收到的请求按照规则分发的过程,称为负载均衡。
负载均衡可分为软负载和硬负载,这些现在用不到了解一下就可以了。
4.动静分离
动静分离是让动态网站里的动态网页根据一定规则把不变的资源和经常变的资源区分开来,动静资源做好了拆分以后,我们就可以根据静态资源的特点将其做缓存操作,这就是网站静态化处理的核心思路。
3.Nginx的特点
(1)跨平台:Nginx 可以在大多数 Unix like OS编译运行,而且也有Windows的移植版本。
(2)配置异常简单,非常容易上手。配置风格跟程序开发一样,神一般的配置
(3)非阻塞、高并发连接:数据复制时,磁盘I/O的第一阶段是非阻塞的。官方测试能够支撑5万并发连接,在实际生产环境中跑到2~3万并发连接数.(这得益于Nginx使用了最新的epoll模型)
(4)事件驱动:通信机制采用epoll模型,支持更大的并发连接。
(5)master/worker结构:一个master进程,生成一个或多个worker进程
(6)内存消耗小:处理大并发的请求内存消耗非常小。在3万并发连接下,开启的10个Nginx 进程才消耗150M内存(15M*10=150M)
(7)成本低廉:Nginx为开源软件,可以免费使用。而购买F5 BIG-IP、NetScaler等硬件负载均衡交换机则需要十多万至几十万人民币
(8)内置的健康检查功能:如果 Nginx Proxy 后端的某台 Web 服务器宕机了,不会影响前端访问。
(9)节省带宽:支持 GZIP 压缩,可以添加浏览器本地缓存的 Header 头。
(10)稳定性高:用于反向代理,宕机的概率微乎其微
负载均衡算法
1、轮询法
将请求按顺序轮流地分配到后端服务器上,它均衡地对待后端的每一台服务器,而不关心服务器实际的连接数和当前的系统负载。
2、随机法
通过系统的随机算法,根据后端服务器的列表大小值来随机选取其中的一台服务器进行访问。由概率统计理论可以得知,随着客户端调用服务端的次数增多,
其实际效果越来越接近于平均分配调用量到后端的每一台服务器,也就是轮询的结果。
3、源地址哈希法
源地址哈希的思想是根据获取客户端的IP地址,通过哈希函数计算得到的一个数值,用该数值对服务器列表的大小进行取模运算,得到的结果便是客服端要访问服务器的序号。采用源地址哈希法进行负载均衡,同一IP地址的客户端,当后端服务器列表不变时,它每次都会映射到同一台后端服务器进行访问。
4、加权轮询法
不同的后端服务器可能机器的配置和当前系统的负载并不相同,因此它们的抗压能力也不相同。给配置高、负载低的机器配置更高的权重,让其处理更多的请;而配置低、负载高的机器,给其分配较低的权重,降低其系统负载,加权轮询能很好地处理这一问题,并将请求顺序且按照权重分配到后端。
5、加权随机法
与加权轮询法一样,加权随机法也根据后端机器的配置,系统的负载分配不同的权重。不同的是,它是按照权重随机请求后端服务器,而非顺序。
6、最小连接数法
最小连接数算法比较灵活和智能,由于后端服务器的配置不尽相同,对于请求的处理有快有慢,它是根据后端服务器当前的连接情况,动态地选取其中当前
积压连接数最少的一台服务器来处理当前的请求,尽可能地提高后端服务的利用效率,将负责合理地分流到每一台服务器。
明天的计划:学习深度思考。
评论