# nginx面试问题

# nginx的动静分离

# nginx的负载均衡

# 常见的负载均衡算法

  1. 轮循均衡(Round Robin): 每一次来自网络的请求轮流分配给内部中的服务器,从 1 至 N 然后重新开始。此种均衡算法适合于服务器组中的所有服务器都有相同的软硬件配置并且平均服务请求相对均衡的情况。
  2. 权重轮循均衡(Weighted Round Robin): 根据服务器的不同处理能力,给每个服务器分配不同的权值,使其能够接受相应权值数的服务请求。例如:服务器A的权值被设计成1,B的权值是 3, C的权值是6,则服务器 A、B、C将分别接受到 10%、 30%、 60%的服务请求。此种均衡算法能确保高性能的服务器得到更多的使用率,避免低性能的服务器负载过重。
  3. 随机均衡(Random): 把来自网络的请求随机分配给内部中的多个服务器。
  4. 权重随机均衡(Weighted Random): 此种均衡算法类似于权重轮循算法,不过在处理请求分担时是个随机选择的过程。18.1.2.5.响应速度均衡(Response Time 探测时间)负载均衡设备对内部各服务器发出一个探测请求(例如 Ping),然后根据内部中各服务器对探测请求的最快响应时间来决定哪一台服务器来
  5. 响应客户端的服务请求。此种均衡算法能较好的反映服务器的当前运行状态,但这最快响应时间仅仅指的是负载均衡设备与服务器间的最快响应时间,而不是客户端与服务器间的最快响应时间。
  6. 最少连接数均衡(Least Connection):最少连接数均衡算法对内部中需负载的每一台服务器都有一个数据记录,记录当前该服务器正在处理的连接数量,当有新的服务连接请求时,将把当前请求分配给连接数最少的服务器,使均衡更加符合实际情况,负载更加均衡。此种均衡算法适合长时处理的请求服务,如 FTP。
  7. 处理能力均衡(CPU、内存): 此种均衡算法将把服务请求分配给内部中处理负荷(根据服务器CPU型号、CPU数量、内存大小及当前连接数等换算而成)最轻的服务器,由于考虑到了内部服务器的处理能力及当前网络运行状况,所以此种均衡算法相对来说更加精确,尤其适合运用到第七层(应用层)负载均衡的情况下。
  8. DNS 响应均衡(Flash DNS):在此均衡算法下,分处在不同地理位置的负载均衡设备收到同一个客户端的域名解析请求,并在同一时间内把此域名解析成各自相对应服务器的 IP 地址并返回给客户端, 则客户端将以最先收到的域名解析 IP 地址来继续请求服务,而忽略其它的 IP 地址响应。在种均衡策略适 合应用在全局负载均衡的情况下,对本地负载均衡是没有意义的。
  9. 平均加权轮训算法:IP/Weight:静态的权重/Currentweight 动态的权重.

# nginx的集群高可用

# nginx的弹性伸缩设计

# nginx的自省性能优化设计

# CDN与反向代理的区别?

  • CDN是内容分发网络(Content Delivery Network)。是为了解决用户请求响应过慢的问题。比如用户在黑龙江,服务器在海南,用户请求的速度可能受距离、带宽的影响。CDN将几台机器分发在全国各地,用户发出的请求会选择就近的CDN服务器进行处理。CDN简单的来说就是存储一些静态文件的一台或多台服务器,通过复制,缓存主服务器等方式,将文件保存其中。
  • 反向代理一般就是指Nginx,是在主服务器之外加一层代理服务器,用户的请求会发送到代理服务器上,由代理服务器请求真正的服务器,获得到结果后再将结果返回给用户。反向代理主要的用处就是会加一层安全保障,所有的请求不是直接请求主服务器,而是代理服务器,这样就保护了主服务器不受侵害。第二个用处就是代理服务器会有缓存,命中缓存的请求可以不用再请求主服务器,提高响应速度。

CDN与反向代理有以下几点区别:

  1. CDN是一个系统化的方案,而反向代理只是一种技术。CDN通常包含了多个反向代理服务器,以及DNS解析、内容管理、安全防护等功能。
  2. CDN是分布式的,而反向代理是集中式的。CDN在不同地区部署了多个缓存服务器,可以跨区域加速用户访问;而反向代理通常只有一个或少数几个服务器,不能解决距离和带宽问题。
  3. CDN主要针对静态资源,而反向代理可以针对动态资源。CDN通过缓存静态资源(如图片、视频、CSS、JS等),来提高用户访问速度;而反向代理可以转发动态资源(如API、WebSocket等),来实现负载均衡和安全保护。