9 nginx之反向代理和负载均衡
1、反向代理
1.什么是代理
代理一词往往并不陌生, 该服务我们常常用到如(代理理财、代理租房、代理收货等等),如下图所示
2.没有代理
在没有代理模式的情况下,客户端和Nginx服务端,都是客户端直接请求服务端,服务端直接响应客户端。
3.有代理
那么在互联网请求里面,为了安全客户端往往无法直接向服务端发起请求,就需要用到代理服务,来实现客户端和服务端通信,如下图所示
4.Nginx代理服务常见模式
Nginx作为代理服务,按照应用场景模式进行总结,代理分为
1.正向代理
2.反向代理
1)正向代理
正向代理,(内部上网) 客户端 <—> 代理 -> 服务端
2)反向代理
反向代理,用于公司集群架构中,客户端 -> 代理 <—> 服务端
3)正向代理与反向代理的区别
1.区别在于形式上服务的”对象”不一样
2.正向代理代理的对象是客户端,为客户端服务
3.反向代理代理的对象是服务端,为服务端服务
2、负载均衡
1、平均分配
2、权重大小分配
负载均衡是由反向代理来实现的。
负载均衡就是将流量按照一定的方式分配给web机器
选择使用Nginx来搭建负载均衡服务器
1、什么叫四层负载均衡
四层负载均衡是基于TCP/IP协议的
所谓四层负载均衡指的是OSI七层模型中的传输层,那么传输层Nginx已经能支持TCP/IP的控制,
所以只需要对客户端的请求进行TCP/IP协议的包转发就可以实现负载均衡,
那么它的好处是性能非常快、只需要底层进行应用处理,而不需要进行一些复杂的逻辑
2、什么是七层负载均衡
七层负载均衡是基于HTTP协议的
七层负载均衡它是在应用层,那么它可以完成很多应用方面的协议请求,
比如我们说的http应用的负载均衡,
它可以实现http信息的改写、头信息的改写、安全应用规则控制、URL匹配规则控制、以及转发、rewrite等等
的规则,所以在应用层的服务里面,我们可以做的内容就更多,那么Nginx则是一个典型的七层负载均衡SLB
3、四层和七层负载均衡的区别
四层负载均衡数据包在底层就进行了分发,而七层负载均衡数据包则是在最顶层进行分发、由此可以看出,
七层负载均衡效率没有四负载均衡高。
但七层负载均衡更贴近于服务,如:http协议就是七层协议,我们可以用Nginx可以作会话保持,
URL路径规则匹配、head头改写等等,这些是四层负载均衡无法实现的。
HTTP 基于 TCP/IP 协议的,所以,四层负载均衡的性能要高于七层负载均衡。
但是四层负载均衡是不支持域名的。
所以,一般使用七层负载均衡来负载web服务。