Nginx 面试题
目录

Nginx 中如何配置 IP 哈希 (IP Hash) 负载均衡?

· 约 3 分钟读完 · 第 78 / 151 章

推荐答案

在 Nginx 中配置 IP 哈希(IP Hash)负载均衡可以通过以下步骤实现:

  1. 在 http 块中定义一个上游服务器组(upstream),并使用 ip_hash 指令启用 IP 哈希负载均衡。

  2. 在 server 块中配置代理传递,将请求转发到上游服务器组。

示例配置如下:

在这个配置中,Nginx 会根据客户端的 IP 地址进行哈希计算,并将请求始终转发到同一个后端服务器。

本题详细解读

IP 哈希负载均衡的工作原理

IP 哈希负载均衡是一种基于客户端 IP 地址的负载均衡策略。Nginx 会对客户端的 IP 地址进行哈希计算,并根据计算结果将请求分配到特定的后端服务器。由于哈希计算的结果是确定的,因此同一个客户端的请求总是会被转发到同一个后端服务器。

配置步骤详解

  1. 定义上游服务器组:

    • 在 http 块中使用 upstream 指令定义一个上游服务器组,例如 backend。
    • 在 upstream 块中使用 ip_hash 指令启用 IP 哈希负载均衡。
    • 在 upstream 块中列出所有后端服务器的地址,例如 server 192.168.1.101;。
  2. 配置代理传递:

    • 在 server 块中配置 location 指令,指定需要代理的路径。
    • 使用 proxy_pass 指令将请求转发到上游服务器组,例如 proxy_pass http://backend;。

注意事项

  • 会话保持:IP 哈希负载均衡适用于需要会话保持的场景,因为同一个客户端的请求总是会被转发到同一个后端服务器。
  • 后端服务器变化:如果后端服务器的数量发生变化(例如增加或减少服务器),哈希计算结果可能会发生变化,导致客户端请求被转发到不同的服务器。
  • IPv4 和 IPv6:Nginx 的 IP 哈希负载均衡支持 IPv4 和 IPv6 地址。

通过以上配置,Nginx 可以根据客户端的 IP 地址实现负载均衡,确保同一个客户端的请求始终被转发到同一个后端服务器。