对Nginx的理解

一、作用

1、正向代理:给客户段加一层代理的模式,最常见的例子就是上网冲浪的程序猿平时使用VPN或者fq的时候代理到外网,然后在外网访问到国外服务器的操作

2、反向代理:

就是就是用户访问我的服务器的时候,我在我的服务器外面加一层代理,这样他就不用知道我的IP和端口是多少,只要知道我的代理是多少,然后找到我的代理就能找到我的服务器。

但这也没说明这个反向代理到底有什么用,我为什么不能直接去访问服务器地址,干嘛还要加个莫名其妙的Nginx。

服务器给自己加一层代理。那这个代理肯定是有用,那这个用处体现在哪。首先我们假设我有一台服务器,我这个服务器做的太好了(虽然我这个实力,基本不可能),好多人来访问我,我这个服务器性能也一般般,撑不住那么多人访问,所以我就加一台服务器,那我就拥有两个服务器,同时两个地址了。那用户想访问我怎么办,难不成在前端写两个路径,随机访问?这多多少少有点蠢(万一有一个服务挂了怎么办,那不就一下请求正常,一下请求失败),所以程序猿就在服务器的地址全部挂到Nginx上,我服务有多个,但Nginx只有一个,这样就可以通过一个地址实现访问多台不同地址的服务器。别问我如果一个服务挂了Nginx里面会不会去访问那个挂了的,我相信大佬的开发

(所以正向和反向的概念是从预览网页的用户的角度出发,用户自己给自己加的代理就是正向,而提供服务方给自己加的代理就是反向)

 

3、负载均衡:在上一点中有提到我可以在Nginx里面放多个服务器地址,那这个时候就选择哪一个比较关键了,为了防止大量用户只访问一个服务器,前端请求经过Nginx的请求后,Nginx向后端服务器发请求时,按程序猿心意去给服务器设置比例?当然是可以的,这个设置可以在Nginx的config文件里面配置。这样程序猿就实现了后端服务器被均匀的被访问到,这样也就解决了一个负载均衡的问题

4、动静分离:将静态资源放到Nginx里,可以提升访问速度。

 

二、负载均衡策略:

1、轮询

2、加权轮询

3、ipHash:可以解决session不共享的问题。

Session不共享:就是在用户在可以随机访问其中一台服务器之后,就会产生一个问题,比如用户在前端登录了,然后经过的是第一台服务器,那用户的登录session就存到了第一台服务器上,(一般后端是获取到用户登录消息后会把用户登录信息放到一个线程局部变量ThreadLocal里面)

那我下一次如果负载均衡给我均衡到第二台服务器,那我去哪找我的session,那我找不到session不就是没登陆,那我不就访问不了接口了。但实际上我已经登录了啊。这有是一个问题,于是对于这个问题,ipHash可以解决,使用ipHash之后固定IP的那个就会访问同一服务器,这样既实现了负载均衡,又能解决session问题。但是这个方法有个问题就是。万一那一台服务器挂了。就又会出现找不到session的情况。所以一般也不推荐使用ipHash,一般都是加一层redis,把session放redis里面,这样就无论访问哪一个都能找到之前登录的session。

posted @ 2023-06-15 19:00  小许不错不错不错  阅读(26)  评论(0)    收藏  举报