前言:
nginx在面试中多次被q,这次将nginx 知识点进行集中总结如下。
Nginx (engine x) 是一款轻量级的 Web 服务器 、反向代理服务器及电子邮件(IMAP/POP3)代理服务器。
反向代理
反向代理(Reverse Proxy)方式是指以代理服务器来接受 internet 上的连接请求,然后将请求转发给内部网络上的服务器,并将从服务器上得到的结果返回给 internet 上请求连接的客户端,此时代理服务器对外就表现为一个反向代理服务器。
image.png
负载均衡
负载均衡策略: 目前Nginx服务器的upstream模块支持6种方式的分配。
1 轮询: 每个请求会按时间顺序逐一分配到不同的后端服务器。
在轮询中,如果服务器down掉了,会自动剔除该服务器。
缺省配置就是轮询策略。
此策略适合服务器配置相当,无状态且短平快的服务使用。
2 权重方式,在轮询策略的基础上指定轮询的概率。
权重越高分配到需要处理的请求越多。
此策略可以与least_conn和ip_hash结合使用。
此策略比较适合服务器的硬件配置差别比较大的情况
3 ip_hash:保证相同的ip访问相同的服务器,主要解决session不能跨服务的问题。
在nginx版本1.3.1之前,不能在ip_hash中使用权重(weight)。
ip_hash不能与backup同时使用。
此策略适合有状态服务,比如session。
当有服务器需要剔除,必须手动down掉
4 least_conn:把请求转发给连接数较少的后端服务器。
此负载均衡策略适合请求处理时间长短不一造成服务器过载的情况。
5 fair(第三方策略):按照服务器端的响应时间来分配请求,响应时间短的优先分配。
6 url_hash(第三方策略):同一个资源多次请求,可能会到达不同的服务器上,导致不必要的多次下载,缓存命中率不高,以及一些资源时间的浪费。而使用url_hash,可以使得同一个url(也就是同一个资源请求)会到达同一台服务器,一旦缓存住了资源,再此收到请求,就可以从缓存中读取。
该策略主要是可以提高后端服务器缓存效率