nginx 反向代理 负载均衡

一、nginx  

  1. 是什么

    • Nginx 是一个开源的、高性能的 HTTP 服务器、反向代理服务器以及电子邮件(IMAP/POP3)代理服务器。它由 Igor Sysoev 开发,最初是为了解决 C10K 问题(即处理一万个并发连接)而设计的。Nginx 采用事件驱动的异步非阻塞模型,以高效地处理大量并发请求。
  2. 为什么用

    • 高并发需求:在现代网络环境下,网站和网络应用可能面临大量的并发访问,如电商促销活动、热门新闻发布时的流量高峰。传统的服务器在处理高并发时可能会出现性能瓶颈,而 Nginx 的事件驱动模型使其能够轻松应对大量并发连接,所以被广泛用于处理高并发场景。
    • 多功能性:除了作为 Web 服务器,它还可以作为反向代理和邮件代理服务器。对于需要多种网络服务功能整合的场景,使用 Nginx 可以减少服务器软件的种类,简化架构。
  3. 有什么好处

    • 高性能:能够快速处理大量的并发请求,减少响应时间,提高用户体验。例如,在处理大量静态文件请求(如图片、样式表、脚本等)时,Nginx 的性能优势明显。
    • 资源效率高:由于其异步非阻塞模型,占用的系统资源相对较少。与传统的基于进程或线程的服务器相比,在相同硬件条件下,Nginx 可以处理更多的请求而不会耗尽系统资源。
    • 稳定性好:Nginx 具有高度的稳定性,能够长时间稳定运行,减少因服务器软件故障导致的服务中断风险,适合用于生产环境中的关键业务服务。
  • 占内存小,可实现高并发连接,处理响应快
  • 可实现http服务器、虚拟主机、方向代理、负载均衡
  • Nginx配置简单
  • 可以不暴露正式的服务器IP地址

        4. 为什么Nginx性能这么高?

因为他的事件处理机制:异步非阻塞事件处理机制:运用了 epoll 模型,提供了一个队列,排队解

        5. Nginx怎么处理请求的?

nginx 接收一个请求后,首先由 listen server_name 指令匹配 server 模块,再匹配 server 模块里的
location location 就是实际地址
server {                                     # 第一个Server区块开始,表示一个独立的虚拟主机站点
    listen 80;                              # 提供服务的端口,默认80
    server_name localhost;                  # 提供服务的域名主机名
    location / {                             # 第一个location区块开始
        root html;                          # 站点的根目录,相当于Nginx的安装目录
        index index.html index.htm;         # 默认的首页文件,多个用空格分开
    }                                        # 第一个location区块结果
}

        6. Nginx应用场景?

         http服务器 Nginx 是一个 http 服务可以独立提供 http 服务。可以做网页静态服务器。
         虚拟主机。可以实现在一台服务器虚拟出多个网站,例如个人网站使用的虚拟机。
         反向代理,负载均衡。当网站的访问量达到一定程度后,单台服务器不能满足用户的请求时,需要 用多台服务器集群可以使用nginx 做反向代理。并且多台服务器可以平均分担负载,不会应为某台 服务器负载高宕机而某台服务器闲置的情况。
        nginx 中也可以配置安全管理、比如可以使用 Nginx 搭建 API 接口网关 , 对每个接口服务进行拦截。

二、反向代理

反方代理就是请求统一被 Nginx 接收, nginx 反向代理服务器接收到之后,按照一定的规 则分发给
了后端的业务处理服务器进行处理了
  1. 是什么

    • 在 Nginx 中,反向代理是一种服务器,它位于 Web 服务器前面,接收来自互联网客户端的请求,然后根据一定的规则将这些请求转发到后端的一个或多个 Web 服务器上,并将后端服务器的响应返回给客户端。从客户端的角度看,它好像是直接与反向代理服务器交互,而不知道后端还有多个 Web 服务器。
  2. 为什么用

    • 安全防护:后端的 Web 服务器可能包含敏感信息或重要的业务逻辑,将其隐藏在反向代理后面可以增加安全性。外部的恶意攻击首先会面对反向代理服务器,减少了后端服务器直接暴露于攻击的风险。
    • 集中管理请求:方便对进入后端 Web 服务器的请求进行集中管理和控制。例如,可以统一对请求进行过滤、认证、限流等操作,而不需要在每个后端服务器上单独配置。
  3. 有什么好处

    • 提高安全性:隐藏后端服务器的 IP 地址、端口等信息,降低被攻击的风险。同时,反向代理可以对请求进行初步的安全检测,如防范 SQL 注入、XSS 攻击等,保护后端服务器的安全。
    • 优化性能
      • 内容缓存:Nginx 作为反向代理可以缓存经常被访问的内容。当客户端再次请求相同内容时,反向代理可以直接从缓存中提供响应,减少了后端服务器的负载,提高了响应速度。
      • 负载均衡:在某些情况下,反向代理可以与负载均衡功能结合,根据后端服务器的负载情况合理分配请求,提高整个系统的资源利用率和响应速度。
#(正向代理就是一个人发送一个请求直接就到达了目标的服务器)

三、负载均衡

  1. 是什么

    • 在 Nginx 中,负载均衡是一种将客户端的请求分配到多个后端服务器的技术。Nginx 通过定义上游服务器组(upstream),并使用特定的负载均衡算法(如轮询、加权轮询、IP 哈希等),将接收到的请求均匀地或按照特定规则分配到这些后端服务器上,以避免单个服务器负载过重而其他服务器闲置的情况。
  2. 为什么用

    • 应对高流量和高并发:当网站或网络应用的流量增长时,单个服务器可能无法处理所有的请求。通过负载均衡,可以将请求分散到多个服务器上,从而提高系统整体的处理能力,满足高流量和高并发的需求。
    • 提高系统可用性:如果只有一个服务器,一旦这个服务器出现故障,整个服务就会中断。而使用负载均衡,可以在部分服务器出现故障时,将请求路由到其他正常的服务器上,保证服务的连续性。
  3. 有什么好处

    • 提高服务器资源利用率:通过合理分配请求,使得每个服务器的负载相对均衡,充分利用了所有服务器的资源。例如,在一个服务器集群中,不同服务器的性能可能略有差异,加权轮询算法可以根据服务器的性能分配不同比例的请求,提高整体资源利用率。
    • 增强系统可用性:当某个后端服务器出现故障(如硬件故障、软件崩溃等)时,负载均衡器可以自动将请求分配到其他正常的服务器上,确保服务不会中断,提高了系统的整体可用性。

负载均衡常见算法有以下几种:

一、轮询(Round - Robin)

  1. 原理
    • 按照顺序依次将客户端请求分配到后端服务器组中的各个服务器上。例如,如果有服务器 A、服务器 B 和服务器 C 三个后端服务器,第一个请求会被分配到服务器 A,第二个请求分配到服务器 B,第三个请求分配到服务器 C,第四个请求又回到服务器 A,如此循环。
  2. 适用场景
    • 当后端服务器的性能基本相同,处理能力相近时适用。这种算法简单公平,能保证每个服务器都能均匀地接收到请求,从而均匀地分担负载。
upstream backserver {
    server 192.168.0.12;
    server 192.168.0.13;
}

二、加权轮询(Weighted Round - Robin)

  1. 原理
    • 为每个后端服务器分配一个权重值。权重表示服务器相对的处理能力,权重越高的服务器,在轮询过程中被分配到请求的机会就越多。例如,服务器 A 的权重为 3,服务器 B 的权重为 2,服务器 C 的权重为 1,那么在 6 次请求分配过程中,服务器 A 会被分配到 3 次请求,服务器 B 会被分配到 2 次请求,服务器 C 会被分配到 1 次请求。
  2. 适用场景
    • 当后端服务器的性能存在差异时非常有用。比如,有的服务器配置高、处理能力强,有的服务器配置低、处理能力弱,通过设置不同的权重,可以让性能高的服务器处理更多的请求,从而充分利用服务器资源,提高整体性能。
upstream backserver {
    server 192.168.0.12 weight=2;
    server 192.168.0.13 weight=8;
}

三、IP 哈希(IP - Hash)

  1. 原理
    • 根据客户端的 IP 地址计算出一个哈希值,然后根据这个哈希值将请求固定分配到后端的某一个服务器上。只要客户端的 IP 地址不变,其请求就会始终被分配到同一个后端服务器。
  2. 适用场景
    • 在需要保持会话(Session)一致性的场景下使用。例如,对于一些依赖于客户端会话状态的 Web 应用,如果同一个客户端的请求被分配到不同的服务器,可能会导致会话丢失或者出现错误。IP - Hash 算法可以确保来自同一个客户端的请求总是被转发到同一个后端服务器,从而保证会话的连续性。
upstream backserver {
    ip_hash;
    server 192.168.0.12:88;
    server 192.168.0.13:80;
}

四、最少连接数(Least - Connections)

  1. 原理
    • 负载均衡器会记录每个后端服务器当前正在处理的连接数,当有新的请求到来时,将请求分配到当前连接数最少的后端服务器上。这种算法动态地根据服务器的负载情况分配请求,能够有效地避免某个服务器负载过重而其他服务器闲置的情况。
  2. 适用场景
    • 在后端服务器处理请求的速度差异较大,或者请求处理时间长短不一的情况下比较适用。它可以确保每个服务器的负载相对均衡,提高整个系统的资源利用率和响应速度。

五、基于 URL 的哈希(URL - Hash)

  1. 原理
    • 根据请求的 URL 计算哈希值,然后根据哈希值将请求分配到特定的后端服务器。这使得相同 URL 的请求总是被转发到同一个后端服务器。
  2. 适用场景
    • 当后端服务器存储了与特定 URL 相关的缓存内容时,这种算法可以确保对于同一个 URL 的请求总是到达同一个服务器,从而提高缓存命中率,减少不必要的服务器处理和网络传输。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值