龙空技术网

Nginx 负载均衡配置教程以及 upstream 详解

羲阳智能 77

前言:

而今大家对“nginx配置负载均衡不生效”都比较关注,看官们都想要了解一些“nginx配置负载均衡不生效”的相关内容。那么小编也在网上收集了一些关于“nginx配置负载均衡不生效””的相关知识,希望我们能喜欢,我们一起来学习一下吧!

一、通用配置

在 Nginx 中配置负载均衡非常简单。通过定义一个 upstream 块,你可以指定多个后端服务器用于负载均衡。下面是一个基本的例子:

http {      upstream myapp {        server backend1.example.com;        server backend2.example.com;        server backend3.example.com;    }      server {        listen 80;        server_name ;              location / {                proxy_pass ;                proxy_set_header Host $host;                proxy_set_header X-Real-IP $remote_addr;                proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;                proxy_set_header X-Forwarded-Proto $scheme;        }    }}

详细说明:

upstream 块: 定义了一个名为 myapp 的负载均衡组,包含了三台后端服务器。server 块: 用于处理进入的请求,并将它们代理到 upstream 定义的服务器组。proxy_pass 指令: 将请求转发到 myapp 这个 upstream 组。proxy_set_header 指令: 设置了一些头信息以保持客户端的原始请求信息。

二、负载均衡算法

Nginx 支持多种负载均衡算法,默认使用 轮询(Round Robin),选择适合应用的负载均衡策略可以帮助提升性能并确保高可用性。你可以通过在 upstream 块中指定不同的策略来更改这个行为:

轮询 (round-robin): 默认策略,轮流将请求分配给每个服务器。权重 (weight): 为服务器分配不同权重,例如:

upstream myapp {     server backend1.example.com weight=3;     server backend2.example.com weight=1;}
最少连接 (least_conn): 将新请求分配给当前活动连接数最少的服务器。
upstream myapp {    least_conn;    server backend1.example.com;    server backend2.example.com;}
IP 哈希 (ip_hash): 基于客户端 IP 地址进行哈希,从而使同一客户端的请求总是转发到同一台后端服务器。
upstream myapp {    ip_hash;    server backend1.example.com;    server backend2.example.com;}
三、upstream 参数详解

在 Nginx 中,upstream 块支持多种配置选项,用于管理与后端服务器的连接,包括超时设置、失败重试次数等。下面是一个详细的 upstream 配置示例:

http {    upstream myapp {        # 定义后端服务器及其权重        server backend1.example.com weight=3 max_fails=3 fail_timeout=30s;        server backend2.example.com weight=2 max_fails=3 fail_timeout=30s;        server backend3.example.com backup;        # 设置空闲连接数        keepalive 16;        # 连接超时时间        connect_timeout 5s;        # 响应超时时间        send_timeout 10s;        proxy_read_timeout 30s;    }      server {      # 省略        .....    }}

配置详解:

server 指令weight=<number>: 指定服务器的权重,影响负载均衡分配。max_fails=<number>: 在指定时间内允许的最大失败次数。如果超过这个值,服务器将被标记为不可用。fail_timeout=<time>: 服务器被标记为不可用的时间长度。在这段时间后会重新尝试连接。backup 参数

该参数将当前服务器标记为备用服务器,仅在主服务器都不可用时才使用。

keepalive

保持活动连接数,以减少建立连接的开销,提高性能。

connect_timeout

设置与后端服务器建立连接的超时时间。

send_timeout

定义发送请求到后端服务器时的超时时间。

proxy_read_timeout

设置从后端服务器接收响应的超时时间。

注:以上配置可以根据应用需求进行调整,以便优化网络延迟和提高服务可靠性。确保在生产环境中仔细测试这些超时时间和重试策略,以找到最佳的设置。

标签: #nginx配置负载均衡不生效