目录
1.Nginx概述
Nginx (engine x) 是一个自由的、开源的、高性能的HTTP服务器 和反向代理服务器,也是一个IMAP、POP3、SMTP代理服务器。
Nginx是一个强大的web服务器 软件,用于处理高并发的HTTP请求 和作为反向代理 服务器做负载均衡 。具有高性能 、轻量级 、内存消耗少,强大的负载均衡能力等优势。
作为一个 HTTP 服务器,Nginx 可以使用较少的内存非常高效可靠地提供静态资源。作为反向代理服务器做负载均衡,它可以动态分发客户端请求,充分利用后端服务器资源。
2.Nginx的特点
- 跨平台:可以在大多数Unix like系统编译运行
- 配置简单
- 非阻塞,高并发连接:数据复制时,磁盘IO的第一阶段是非阻塞。官方测试能支持5万并发连接。
- Nginx代理和后端Web服务器之间无需长连接
- Nginx接受客户请求是异步的,即先将用户请求全部接收下来,再一次性发送到后端Web服务器,极大减轻后端Web服务器的压力。
- 支持内置服务检测。Nginx能够根据应用服务器处理页面返回的状态码,超时信息检测服务是否出现故障,并及时返回错误的请求重新提交到其它节点上
- 内存消耗小,成本低廉,节省带宽,稳定性高
- Nginx支持热部署,几乎做到7*24小时不间断运行,运行数个月也不需要重新启动,还能够在不间断服务的情况下,对软件版本进行升级。
3.Nginx主要功能
1.反向代理
1.1反向代理 : 是指代理服务器来接收Internet上的客户端请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给客户端。此时代理服务器对外就表现为一个反向代理服务器。
反向代理客户端不知道服务器的信息,隐藏了服务器的信息
1.2正向代理 :是一个位于客户端和原始服务器之间的服务器,为了从原始服务器获得内容。客户端向代理发送一个请求并指定目标(原始服务器),然后代理向原始服务器转发并获得的内容返回给客户端
正向代理服务器不知道客户端的信息,隐藏了客户端的信息
2.负载均衡
Nginx负载均衡是以反向代理 的方式进行负载均衡 的,简而言之,就是当有两台或者以上服务器,根据规则随机的将请求分发到指定的服务器上处理,负载均衡配置一般都需要配置反向代理,通过反向代理跳转到负载均衡。
将原先请求集中到单个服务器上的情况改为将请求分发到多个服务器上,负载分发到不同的服务器,就是我们所说的负载均衡
Nginx中常见的的负载均衡方式
1.轮询(Nginx自带,默认)
该策略是Nginx默认的负载均衡策略,每一个客户端请求按时间顺序轮流分配到不同的服务器上,如果后端服务不可以用,会自动过滤掉。
2.weight权重(Nginx自带)
weight代表权重的意思,用于指定轮询的几率,默认权重都是1,可以手动设置调整,权重越高,被分配的次数越多,weight权重和访问比例是成正比的,用于解决后端服务器性能不均衡时,调整访问比例。
3.ip_hash(Nginx自带)
ip_hash是将每个请求按照访问ip的hash结果进行分配,这种方式可以保证同一个用户会固定访问一个后端服务器。优点:可以保证session会话,解决服务器之间session不能共享的问题
4.least_conn(Nginx自带)
将请求转发给连接数较少的后端服务器。每个后端服务器配置可能不同,处理的请求也有可能不同,对于处理的请求有快有慢,least_conn是根据后端服务器的连接情况,动态的选择连接数量较少的一台服务器来处理当前的请求。
5.fair(第三方)
fair是按照服务器端的响应时间来分配请求,响应时间短的服务器优先分配。第三方的负载均衡策略需要安装第三方的插件
6.url_hash(第三方)
url_hash是根据url的hash结果进行分配请求,每一个url会固定到同一个服务器上,配合缓存使用,可以减少不必要的下载和资源时间的浪费。每次同一个url请求到达同一个服务器上,第一次加载后放入缓存,后面再次请求,直接取缓存资源。如果不采用url_hash,可能会导致请求到达不同的服务器,资源出现重新加载的情况。第三方的负载均衡策略需要安装第三方的插件。