Nginx负载均衡配置

Nginx 负载均衡配置指南

基础负载均衡配置
nginx 复制代码
http {
    # 定义上游服务器组
    upstream backend_servers {
        server 127.0.0.1:8080;  # 后端服务器1
        server 127.0.0.1:8081;  # 后端服务器2
        server 127.0.0.1:8082;  # 后端服务器3
    }

    server {
        listen       80;
        server_name  192.168.0.55;

        location / {
            proxy_pass http://backend_servers;  # 指向服务器组
            proxy_set_header Host $host;
            proxy_set_header X-Real-IP $remote_addr;
        }
    }
}

核心配置参数详解

1. 负载均衡策略
策略 配置示例 说明
轮询 upstream { server 1; server 2; } 默认策略,请求均匀分配
权重 server 1 weight=3; server 2; 权重越高分配请求越多
IP哈希 ip_hash; 同一客户端固定访问相同后端
最少连接 least_conn; 优先分配给连接数最少的服务器
nginx 复制代码
upstream backend {
    ip_hash;  # 使用IP哈希策略
    server 192.168.1.101 weight=5;
    server 192.168.1.102 weight=3;
    server 192.168.1.103 backup;  # 备用服务器
}
2. 健康检查配置
nginx 复制代码
upstream backend {
    server 127.0.0.1:8080 max_fails=3 fail_timeout=30s;
    server 127.0.0.1:8081 max_fails=2 fail_timeout=15s;
    
    # 主动健康检查(需要nginx-plus)
    health_check interval=5s fails=3 passes=2 uri=/health;
}
  • max_fails:允许失败次数(默认1)
  • fail_timeout:失败超时时间(默认10s)
  • backup:标记为备用服务器
3. 高级代理参数
nginx 复制代码
location / {
    proxy_pass http://backend_servers;
    
    # 连接优化
    proxy_connect_timeout 5s;     # 连接超时
    proxy_read_timeout 60s;        # 读取响应超时
    proxy_send_timeout 30s;        # 发送请求超时
    
    # 缓冲区配置
    proxy_buffering on;
    proxy_buffer_size 4k;          # 单个缓冲区大小
    proxy_buffers 8 16k;           # 缓冲区数量*大小
    
    # 重试机制
    proxy_next_upstream error timeout http_500;
    proxy_next_upstream_tries 3;   # 最大重试次数
    proxy_next_upstream_timeout 10s;
}

完整配置示例

nginx 复制代码
#user  nobody;
worker_processes  auto;  # 自动匹配CPU核心数

events {
    worker_connections  10240;  # 高并发场景增大连接数
    use epoll;                  # Linux高性能模式
}

http {
    include       mime.types;
    default_type  application/octet-stream;
    sendfile        on;
    tcp_nopush      on;         # 优化数据包发送
    keepalive_timeout  65;
    
    # 负载均衡服务器组
    upstream app_cluster {
        least_conn;             # 最少连接策略
        server 192.168.1.101:8080 weight=3 max_fails=2 fail_timeout=30s;
        server 192.168.1.102:8080 weight=2;
        server 192.168.1.103:8080 backup;  # 备用服务器
    }
    
    # 静态资源服务器组
    upstream static_servers {
        server 192.168.1.201:80;
        server 192.168.1.202:80;
    }

    server {
        listen       80;
        server_name  www.demosite.com;
        
        # 动态请求负载均衡
        location /api {
            proxy_pass http://app_cluster;
            proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
            proxy_set_header Upgrade $http_upgrade;
            proxy_set_header Connection "upgrade";
        }
        
        # 静态资源负载均衡
        location ~* \.(jpg|css|js)$ {
            proxy_pass http://static_servers;
            proxy_cache my_cache;          # 启用缓存
            proxy_cache_valid 200 1d;      # 200响应缓存1天
            expires 30d;                   # 客户端缓存30天
        }
        
        # 错误处理
        error_page 500 502 503 504 /50x.html;
        location = /50x.html {
            root   html;
        }
    }
}

性能优化参数

参数 推荐值 说明
worker_processes auto 自动匹配CPU核心数
worker_connections 10240 单个工作进程最大连接数(需配合系统ulimit调整)
keepalive_timeout 65s 保持连接超时时间
proxy_buffers 8 16k 缓冲区数量*大小(高并发场景可增大)
proxy_connect_timeout 5s 后端连接超时时间
gzip on - 启用压缩(需在http块添加)
tcp_nopush on 优化数据包发送(与sendfile配合使用)

常用调试命令

bash 复制代码
# 检查配置语法
nginx -t

# 热重载配置
nginx -s reload

# 查看连接状态
netstat -an | grep :80

# 实时监控请求
tail -f /var/log/nginx/access.log

负载均衡拓扑图

请求分发 请求分发 请求分发 客户端 Nginx负载均衡器 后端服务器1:8080 后端服务器2:8081 后端服务器3:8082 数据库

通过此配置,Nginx可实现高效负载均衡,支持超高并发连接。关键点:合理分配服务器权重 + 智能健康检查 + 连接参数优化,三者结合可构建高可用Web服务架构。