Nginx是什么
Nginx 是开源的轻量级 Web 服务器、反向代理服务器,以及负载均衡器。其特点是高并发,高性能和低内存。另外Nginx往往会部署在一些互联网应用比较前置的位置,执行一些流量限制的策略,如对访问的IP地址和并发数进行相应的限制。
反向代理
反向代理是一种代理服务器的配置模式,它代表服务器向客户端提供服务。客户端发送请求到反向代理服务器,然后反向代理服务器将请求转发到后端的真实服务器上,并将响应返回给客户端。这一过程叫反向代理。Nginx可以作为反向代理服务器,在接收到请求后会根据特定规则将请求转发给一个或多个真实服务器上进行处理,同时将响应返回给客户端。
反向代理的作用主要有以下三点:
_ 保障匿名性和安全性:反向代理会拦截所有传入请求,为后端服务器带来更高层级的保护。
_ 负载均衡:反向代理服务器分担了大量的流量请求,提高了服务器容量以处理大量请求。
_ 缓存数据:反向代理可以缓存经常请求的数据,降低了网站服务器的负载,提高了网站性能。
负载均衡
将原先请求集中到单个服务器上的情况改为增加服务器的数量,然后将请求分发到各个服务器上,将负载分发到不同的服务器,即负载均衡。
反向代理服务器可以充当“流量指挥官”,它位于后端服务器的前面,负责将客户端请求分发到一组服务器,并最大限度地提高速度和容量利用率,同时确保无任何服务器过载,以免出现性能下降的情况。如果某台服务器发生故障,则负载均衡器会将流量重定向到其它在线的服务器。
限流策略
流量限制可以用作安全目的,避免把流量压力直接给上游的服务器,如数据库等,实现系统的高可用。
限流的主要方式有两种
1、速率限流,即限制访问频率,可配置 Nginx模块:limit_req_zone 用来限制单位时间内的请求数,即速率限制,采用的漏桶算法 “leaky bucket”。
2、并发量限流,即限制并发连接数,可配置 Nginx模块:limit_req_conn 用来限制同一时间连接数,即并发限制。
动静分离
为了加快网站的解析速度,可以把静态页面和动态页面由不同的服务器来解析,加快解析速度,降低原来单个服务器的压力。
API网关和Nginx
本质上看API网关也是做了请求的转发,那既然Nginx也可以做请求转发,这两者有什么区别? 一张图就可以很好的理解了。
Nginx做负载均衡时,考虑到API网关在系统中不止一个(以集群的方式做高可用),我们可以将Nginx至于API网关前,负责对API网关的负载均衡,然后再由网关决定进入到哪个真实的web 服务器。 这样就可以让两者的分工更加明确:API网关聚合服务,Nginx请求转发