nginx的反向代理和负载均衡,动静分离问题,,,集群搭建

tech2024-06-28  65

1.代理 正向代理:

正向代理服务是由客户端设立的。客户端了解代理服务器和目标服务器都是谁。帮助咱们实现突破访问权限,提高访问的速度,对目标服务器隐藏客户端的ip地址。

反向代理:

反向代理服务器是配置在服务端的。客户端是不知道访问的到底是哪一台服务器。达到负载均衡,并且可以隐藏服务器真正的ip地址。

EditPlus中server文件发生改动都会根据在yml文件中的设置映射到linux中;一定是保持linux服务的开启

2.负载均衡 当你访问本地上的地址localhost:8080时(本地开启linux两个服务80和81,但是当你访问同一个地址时是怎么确定你访问的那个服务呢?就是根据引映射的ip地址),都会根据location中的windowtomcat指向上面的两个ip地址,这样只要不进行设置这两个被访问到的概率是一样的:这就是负载均衡。

轮询:将客户端发起的请求,平均的分配给每一台服务器。

权重:会将客户端的请求,根据服务器的权重值不同,分配不同的数量。

ip_hash:基于发起请求的客户端的ip地址不同,他始终会将请求发送到指定的服务器上。第一次访问的ip是哪个以后即使设置了权重也没有用都只是访问第一个。

upstream windowtomcat{ server 192.168.32.130:8081; server 192.168.32.130:8080; } server { listen 80; #这个端口的意思是访问宿主机端口号 server_name localhost; location / { proxy_pass http://windowtomcat; #只要访问windowTomcat就会先到这里再反射到上边的连接试下反向代理 } }

打破负载均衡分配不同的权重: 3.动静分离

Nginx的并发能力公式:

​ worker_processes * worker_connections / 4 | 2 = Nginx最终的并发能力

动态资源需要/4,静态资源需要/2.

Nginx通过动静分离,来提升Nginx的并发能力,更快的给用户响应。

1,》为什么动态是/4:因为要有接收和相应 2》要访问静态只要找ndinx的本地资源(事先在nginx服务器放静态资源) 3.1 动态资源代理实现(和之前一样发请求到另一个服务器)

使用proxy_pass动态代理

# 配置如下 location / { proxy_pass 路径; }

3.2 静态资源代理实现(需要先配置数据卷,再在nginx服务器映射数据卷中添加静态资源才能实现访问nginx服务器映射本地资源)

使用root静态代理

# 配置如下 location / { root 静态资源路径; index 默认访问路径下的什么资源; autoindex on; # 代表展示静态资源的全部内容,以列表的形式展开。 } # 先修改docker-compose.yml,添加一个数据卷,映射到Nginx服务器的一个目录 # 添加了index.html和1.jpg静态资源 # 修改nginx的配置文件

实现步骤: 1》》yml里面加数据卷===把静态资源放在映射的本地文件中,当访问ndinx时直接映射到本地资源实现静态资源的访问。 2》》回到docker_nginx重新加载服务器(这时会发现多个两个映射文件) 3》》分别进入到html页面和imge配置资源 进入imge所在文件夹直接把图片拉倒文件夹内部即可

4》》修改nginx的配置文件 [conf.d文件下的default.conf配置文件中添加动静分离的代理路径]这个路径是nginx内部的路径,根据这个路径的映射再读取到本地的静态资源。

5》》实现访问 192.168.33.136/html 或者192.168.33.136/html/index.hyml 192.168.33.136/img (全部资源) 或者192.168.33.136/img/1,jpg

附录:

》》》一个server可以写多个location 》》》轮询的体现 》》》权重的体现 》》》ip_hash; 的体现(第一次访问的ip是哪个以后即使设置了权重也没有用都只是访问第一个。)

Nginx集群(后边很重要)


7.1 集群结构

单点故障,避免nginx的宕机,导致整个程序的崩溃

准备多台Nginx。

准备keepalived,监听nginx的健康情况。

准备haproxy,提供一个虚拟的路径,统一的去接收用户得请求。

7.2 搭建Nginx集群

查看资料中的内容,直接通过运行docker-compose即可

1》在opt下创建一个docker_nginx_cluster目录 2》进入到目录内部 3》把所有的文件全都拉到该目录下即可(在我的资源nginx)

最新回复(0)