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服务架构。