一、Nginx
1.Nginx概念
Nginx 是一个高性能的开源 Web 服务器软件,也可以用作反向代理、负载均衡器和 HTTP 缓存等功能。它具有占用资源少、处理并发连接能力强等优点,成为很多网站和应用程序的首选服务器。
2.关于代理
说到代理,首先我们要明确一个概念,所谓代理就是一个代表、一个渠道;
此时就涉及到两个角色,一个是被代理角色,一个是目标角色,被代理角色通过这个代理访问目标角色完成一些任务的过程称为代理操作过程;如同生活中的专卖店~客人到adidas专卖店买了一双鞋,这个专卖店就是代理,被代理角色就是adidas厂家,目标角色就是用户。
2.1正向代理
正向代理是客户端与目标服务器之间的中间代理。当客户端需要访问互联网资源时,它将请求发送给正向代理服务器,然后由代理服务器代表客户端向目标服务器发起请求。目标服务器无法知道真正请求的客户端身份,只能感知到正向代理服务器的请求。正向代理常用于公司或组织内部网络中,用于控制和监管对外访问。
正向代理最大的特点是客户端非常明确要访问的服务器地址;服务器只清楚请求来自哪个代理服务器,而不清楚来自哪个具体的客户端;正向代理模式屏蔽或者隐藏了真实客户端信息。
正向代理的用途:
(1)访问原来无法访问的资源,如Google
(2)可以做缓存,加速访问资源
(3)对客户端访问授权,上网进行认证
(4)代理可以记录用户访问记录(上网行为管理),对外隐藏用户信息
2.2反向代理
反向代理是位于目标服务器和客户端之间的中间代理。当客户端发起请求时,请求会被发送给反向代理服务器,然后由反向代理服务器将请求转发给目标服务器,并将目标服务器返回的响应再转发给客户端。客户端无法直接与目标服务器通信,只能与反向代理进行通信。反向代理常用于服务器负载均衡、缓存加速、安全过滤等应用场景。
反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器 地址,隐藏了真实服务器 IP 地址。
反向代理的作用:
(1)保证内网的安全,通常将反向代理作为公网访问地址,Web服务器是内网
(2)负载均衡,通过反向代理服务器来优化网站的负载
2.3二者区别
- 定位不同:正向代理代表客户端发送请求,反向代理代表目标服务器接收请求。
- 对象不同:正向代理作为客户端的代表,而反向代理作为服务器的代表。
- 可见性不同:正向代理对目标服务器透明,而客户端可感知到反向代理。
- 部署位置不同:正向代理位于客户端和目标服务器之间,反向代理位于目标服务器和客户端之间。
- 目的不同:正向代理用于控制和监管对外访问,而反向代理用于负载均衡和提供服务。
总结来说,正向代理是客户端的代理,代表客户端发送请求;反向代理是服务器的代理,代表服务器接收请求。它们在代理的位置、作用对象和应用场景上有所区别
3.负载均衡
负载均衡(Load Balancing)是一种将网络流量或工作负载分配到多个服务器或计算资源上的技术,以提高系统的性能、可靠性和可伸缩性。通过将负载分摊到多个服务器上,可以避免单一服务器过载而导致整个系统性能下降或服务不可用的情况。
Nginx支持的负载均衡调度算法方式如下:
1.轮询(默认) 每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。
2.weight轮询(常用,具有HA功效!):接收到的请求按照权重分配到不同的后端服务器,即使在使用过程中,某一台后端服务器宕机,Nginx会自动将该服务器剔除出队列,请求受理情况不会受到任何影响。 这种方式下,可以给不同的后端服务器设置一个权重值(weight),用于调整不同的服务器上请求的分配率;权重数据越大,被分配到请求的几率越大;该权重值,主要是针对实际工作环境中不同的后端服务器硬件配置进行调整的。
3.ip_hash(常用):每个请求按访问ip的hash结果分配,这样每个访客固定访问一个后端服务器,这也在一定程度上解决了集群部署环境下session共享的问题。
4.fair:智能调整调度算法,动态的根据后端服务器的请求处理到响应的时间进行均衡分配,响应时间短处理效率高的服务器分配到请求的概率高,响应时间长处理效率低的服务器分配到的请求少;结合了前两者的优点的一种调度算法。但是需要注意的是Nginx默认不支持fair算法,如果要使用这种调度算法,请安装upstream_fair模块。
5.url_hash:按照访问的url的hash结果分配请求,每个请求的url会指向后端固定的某个服务器,可以在Nginx作为静态服务器的情况下提高缓存效率。同样要注意Nginx默认不支持这种调度算法,要使用的话需要安装Nginx的hash软件包。
总的来说,将服务器接收到的请求按照规则分发的过程,称为负载均衡。
4.动静分离
为了加快网站的解析速度ÿ