插件窝 干货文章 nginx负载均衡怎么配置

nginx负载均衡怎么配置

backend server example Nginx 313    来源:    2025-04-23

Nginx负载均衡配置指南

Nginx是一个高性能的HTTP和反向代理服务器,也是优秀的负载均衡器。以下是Nginx负载均衡的详细配置方法。

基本负载均衡配置

1. 定义上游服务器组

在Nginx配置文件中(通常是nginx.confsites-available/目录下的站点配置文件),使用upstream指令定义后端服务器组:

http {
    upstream backend {
        server backend1.example.com;
        server backend2.example.com;
        server backend3.example.com;
    }

    # 其他配置...
}

2. 配置代理传递

在server块中配置代理传递到上游服务器组:

server {
    listen 80;
    server_name example.com;

    location / {
        proxy_pass http://backend;
        proxy_set_header Host $host;
        proxy_set_header X-Real-IP $remote_addr;
        proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
    }
}

负载均衡算法

Nginx支持多种负载均衡算法:

1. 轮询(默认)

upstream backend {
    server backend1.example.com;
    server backend2.example.com;
}

2. 加权轮询

upstream backend {
    server backend1.example.com weight=3;
    server backend2.example.com weight=2;
}

3. IP哈希(基于客户端IP分配)

upstream backend {
    ip_hash;
    server backend1.example.com;
    server backend2.example.com;
}

4. 最少连接

upstream backend {
    least_conn;
    server backend1.example.com;
    server backend2.example.com;
}

高级配置选项

1. 服务器健康检查

upstream backend {
    server backend1.example.com max_fails=3 fail_timeout=30s;
    server backend2.example.com max_fails=3 fail_timeout=30s;
}
  • max_fails: 允许失败次数
  • fail_timeout: 失败后暂停时间

2. 备份服务器

upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    server backup.example.com backup;
}

3. 长连接保持

upstream backend {
    server backend1.example.com;
    server backend2.example.com;
    keepalive 32;  # 保持的连接数
}

完整示例

http {
    upstream backend {
        least_conn;
        server backend1.example.com weight=3 max_fails=2 fail_timeout=30s;
        server backend2.example.com weight=2 max_fails=2 fail_timeout=30s;
        server backup.example.com backup;
        keepalive 32;
    }

    server {
        listen 80;
        server_name example.com;

        location / {
            proxy_pass http://backend;
            proxy_http_version 1.1;
            proxy_set_header Connection "";
            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_connect_timeout 5s;
            proxy_read_timeout 10s;
            proxy_send_timeout 10s;
        }
    }
}

配置验证与重载

  1. 检查配置语法是否正确:

    nginx -t
    
  2. 重载Nginx配置:

    nginx -s reload
    

注意事项

  1. 确保后端服务器上的应用可以处理代理请求
  2. 对于HTTPS站点,需要在Nginx上配置SSL证书
  3. 根据实际业务需求选择合适的负载均衡算法
  4. 监控后端服务器的健康状况和性能指标

通过以上配置,Nginx可以有效地将请求分发到多个后端服务器,提高系统的可用性和性能。