正向代理、反向代理、负载均衡(转载)

正向代理、反向代理、负载均衡(转载),第1张

说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道;此时就涉及到两个角色,一个是被代理角色,一个是目标角色。

被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理 *** 作过程;如同生活中的专卖店,客人到 adidas 专卖店买了一双鞋,这个专卖店就是代理,被代理角色就是 adidas 厂家,目标角色就是用户。

反向代理之前,我们先看看正向代理,正向代理也是大家最常接触到的代理模式,我们会从两个方面来说关于正向代理的处理模式,分别从软件方面和生活方面来解释一下什么叫正向代理。

在如今的网络环境下,我们如果由于技术需要要去访问国外的某些网站,此时你会发现位于国外的某网站我们通过浏览器是没有办法访问的。

此时大家可能都会用一个 *** 作 FQ 进行访问,FQ 的方式主要是找到一个可以访问国外网站的代理服务器,我们将请求发送给代理服务器,代理服务器去访问国外的网站,然后将访问到的数据传递给我们!

上述这样的代理模式称为正向代理,正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。

来看个示意图(我把客户端和正向代理框在一块,同属于一个环境,后面我有介绍):

客户端必须设置正向代理服务器,当然前提是要知道正向代理服务器的 IP 地址,还有代理程序的端口。

如下图:

明白了什么是正向代理,我们继续看关于反向代理的处理方式,举例如我国的某宝网站,每天同时连接到网站的访问人数已经爆表,单个服务器远远不能满足人民日益增长的购买欲望了。

此时就出现了一个大家耳熟能详的名词:分布式部署;也就是通过部署多台服务器来解决访问人数限制的问题。

某宝网站中大部分功能也是直接使用 Nginx 进行反向代理实现的,并且通过封装 Nginx 和其他的组件之后起了个高大上的名字: Tengine 。有兴趣的童鞋可以访问 Tengine 的官网查看具体的信息

那么反向代理具体是通过什么样的方式实现的分布式的集群 *** 作呢,我们先看一个示意图(我把服务器和反向代理框在一块,同属于一个环境,后面我有介绍):

通过上述的图解大家就可以看清楚了,多个客户端给服务器发送的请求,Nginx 服务器接收到之后,按照一定的规则分发给了后端的业务处理服务器进行处理了。

此时请求的来源也就是客户端是明确的,但是请求具体由哪台服务器处理的并不明确了,Nginx 扮演的就是一个反向代理角色。

客户端是无感知代理的存在的,反向代理对外都是透明的,访问者并不知道自己访问的是一个代理。因为客户端不需要任何配置就可以访问。

项目场景

通常情况下,我们在实际项目 *** 作时,正向代理和反向代理很有可能会存在同一个应用场景中,正向代理代理客户端的请求去访问目标服务器,目标服务器是一个反向单利服务器,反向代理了多台真实的业务处理服务器。

具体的拓扑图如下:

截了一张图来说明正向代理和反向代理二者之间的区别,如下图:

我们已经明确了所谓代理服务器的概念,那么接下来,Nginx 扮演了反向代理服务器的角色,它是依据什么样的规则进行请求分发的呢?不用的项目应用场景,分发的规则是否可以控制呢?

这里提到的客户端发送的、Nginx 反向代理服务器接收到的请求数量,就是我们说的负载量。请求数量按照一定的规则进行分发,到不同的服务器处理的规则,就是一种均衡规则。

所以将服务器接收到的请求按照规则分发的过程,称为负载均衡。

负载均衡在实际项目 *** 作过程中,有硬件负载均衡和软件负载均衡两种,硬件负载均衡也称为硬负载,如 F5 负载均衡,相对造价昂贵成本较高。

但是数据的稳定性安全性等等有非常好的保障,如中国移动中国联通这样的公司才会选择硬负载进行 *** 作。

更多的公司考虑到成本原因,会选择使用软件负载均衡,软件负载均衡是利用现有的技术结合主机硬件实现的一种消息队列分发机制。

Nginx 支持的负载均衡调度算法方式如下:

Web 服务器对比

源自: >当需要对内部网络提供更进一步的保护时,仍然可以使用双层防火墙模式,这样兼具反向代理对Web服务器的保护能力,和双层防火墙对内部数据的更大的保护能力。
当组织向外提供信息发布的时候,并不仅仅要提供一些静态的网页,更大的可能是要根据实际的数据动态发布信息。因此发布的网页便需要通过访问数据库动态生成,通常使用的动态生成技术有CGI或服务器端文档解析等方式生成的。然而无论那种方式,都需要使得Web服务器能够和数据库服务器进行连接、通信。然而系统数据库应该是内部网络中应该首要保护的系统,因此要求安全性要求不高的对外发布信息的Web服务器和内部数据库服务器放置在同一个网段,就会造成相应的安全问题。
为了提高访问数据库服务器的安全性,就需要对能够访问数据库的CGI程序进行限制,这就要求对启动CGI的URL请求比对普通url进行更严格的限制。与普通包过滤型防火墙不同,反向代理能够理解>什么是 Nginx Proxy Manager ?

Nginx Proxy Manager 是用于管理 Nginx 代理主机的 Docker 容器,具有简单、强大的界面。它使您可以轻松地转发到您在家里或其他地方运行的网站,包括免费的 SSL,而无需对 Nginx 或 Letsencrypt 了解太多。

通过 phpMyAdmin 在 MariaDB 10 中新建用户 npm ,创建同名的库 npm 并授予所有权限。
在注册表中搜索 nginx-proxy-manager ,选择第一个 jc21/nginx-proxy-manager,版本选择 latest。

在 docker 文件夹中,创建一个新文件夹,并将其命名为 npm,再建 2 个子目录,分别命名为 data 和 letsencrypt

端口
端口不冲突就行,不确定的话可以用命令查一下

在浏览器中输入 >正向代理,也就是传说中的代理,他的工作原理就像一个跳板。简单的说,我是一个用户,我访问不了某网站,但是我能访问一个代理服务器,这个代理服务器呢,他能访问那个我不能访问的网站,于是我先连上代理服务器,告诉他我需要那个无法访问网站的内容,代理服务器去取回来,然后返回给我。从网站的角度,只在代理服务器来取内容的时候有一次记录。结论就是,正向代理,是一个位于客户端和原始服务器(origin

server)之间的服务器,为了从原始服务器取得内容,客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转交请求并将获得的内容返回给客户端。客户端必须要进行一些特别的设置才能使用正向代理。
反向代理举例:
例用户访问 >使用frp,至少需要一台有公网IP的服务器,一台需要实现内网穿透的机器,SSH工具,以及一个域名(如果只是建立SSH反向代理则不需要域名)。
其实访问NAS的没这必要太麻烦了,用花生壳DDNS不就行了,或是他们家的蒲公英异地组网也可以,简单很多。

首先回答第一个问题,如果游戏本a设置全局代理到拥有公网IP的云服务器b,并在b上建立代理服务,则a的游戏服务器可以通过b的公网IP地址访问。但是,这并不意味着a的游戏服务器拥有公网IP地址。如果要让a的游戏服务器拥有公网IP地址,需要在云服务器b上建立端口映射或NAT转发等服务,将b的公网IP映射到a的游戏服务器上。
其次回答第二个问题,要让a的游戏服务器出现在steam服务器列表中,需要使用Steamworks SDK并在a的游戏服务器上实现相关功能。具体来说,需要在游戏服务器上使用Steamworks SDK提供的API,将a的游戏服务器注册到Steam服务器列表中。需要注意的是,Steamworks SDK只能用于Steam游戏。
关于第三个问题,如果使用樱花frp的TCP/UDP隧道,需要建立的隧道端口应该包括a的游戏服务器端口以及frp客户端与服务端通信所使用的端口。具体来说,需要在游戏本a上运行frp客户端,并通过frp客户端将a的游戏服务器端口映射到云服务器b上。同时,需要在云服务器b上运行frp服务端,并将b的公网IP地址与frp服务端通信所使用的端口映射到frp客户端所使用的端口上。这样,通过b的公网IP地址加上映射的端口即可访问到a的游戏服务器。
最后,如果不使用樱花frp而是在云服务器b上建立其他服务,可以考虑使用端口映射或NAT转发等服务,将b的公网IP映射到a的游戏服务器上。具体来说,可以在云服务器b上运行端口映射或NAT转发软件,将b的公网IP地址与a的游戏服务器端口进行映射。这样,通过b的公网IP地址加上映射的端口即可访问到a的游戏服务器。需要注意的是,端口映射或NAT转发可能会对网络安全造成一定的影响,需要谨慎使用。


欢迎分享,转载请注明来源:内存溢出

原文地址: https://outofmemory.cn/zz/13086150.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-30
下一篇 2023-05-30

发表评论

登录后才能评论

评论列表(0条)

保存