Nginx 入门
简介:Nginx由俄罗斯的伊戈尔·赛索耶夫使用C语言编写的,是一个高性能的http和反向代理服务器,也是一个通用的TCP/UDP代理服务器,特点是占用内存少,并发能力强,在理论上单节点的nginx同时支持5W并发连接。
1. 特点
A. 正向代理(为客户端服务)和反向代理(为服务端服务)
正向代理:指局域网中的电脑用户想要直接访问网络是不可行的,只能通过代理服务器来访问的代理方式;
反向代理:客户端无法感知代理,因为客户端访问网络不需要配置,只要把请求发送到反向代理服务器,由反向代理服务器去选择目标服务器获取数据,然后再返回到客户端,此时反向代理服务器和目标服务器对外就是一个服务器,暴露的是代理服务器地址,隐藏了真实服务器IP地址;
B. 解决跨域;
C. 请求过滤(接口基础认证);
D. 负载均衡;
E. 静态资源服务器
动静分离:指把之前的动态资源和静态资源都放在Tomcat里面变为静态资源放置Nginx;
F. 配置gzip;
G. 本地缓存。
2. 负载均衡
A. 分类:
硬件负载均衡(F5)和软件负载均衡(Nginx);
DNS负载均衡、IP负载均衡、链路层负载均衡、混合型负载均衡;
B. 作用:用来将众多的客户端请求合理的分配到各个服务器,以达到服务器资源的充分利用和更少的请求时间,同时减少单个服务器的压力;
C. 负载均衡策略
轮询(Round Robin):对所有的请求进行轮询发送,是默认的策略;
最小连接数(Least Connections):以最少的活动连接数将请求发送,upstream值为least_conn,同样要考虑服务器的权重;
客户端ip绑定(IP Hash):发送请求的服务器由客户端IP地址决定,upstream值为ip_hash;
最快响应时间(Least Time):选择请求具有最低平均延迟和最低活动连接数的服务器来发送,upstream值为least_time header;
随机选择(Random):每个请求将被传递到随机选择的服务器,upstream值为random two least_time=last_byte;
3. 常见负载均衡器
A. 四层负载均衡:基于IP和端口实现,起到转发的作用,TCP的连接建立是客户端和服务器直接建立的;
LVS:重量级软件,部署麻烦,但是性能高,应用范围广;
HAProxy:轻量级软件,支持的负载均衡策略多,比较灵活;
Nginx:轻量级软件,对Session支持不友好;
B. 七层负载均衡:基于URL或域名等应用层信息实现,起到代理的作用,负载均衡器和客户端以及服务器都会建立TCP连接;
HAProxy:灵活性高,支持Session会话保持;
Nginx:支持高并发,正则灵活配置,部署简单,适合静态和反向代理;
Apache:性能较差,适合处理动态请求;
4. Nginx高可用
A. 安装Keepalived,修改keepavlied.conf配置文件;
可参考:Keepalived + Nginx 实现高可用 Web 负载均衡
可参考:Nginx五大应用场景