Nginx 负载均衡配置指南
基础负载均衡配置
http {# 定义上游服务器组upstream backend_servers {server 127.0.0.1:8080; # 后端服务器1server 127.0.0.1:8081; # 后端服务器2server 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; | 优先分配给连接数最少的服务器 |
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. 健康检查配置
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. 高级代理参数
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;
}
完整配置示例
#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配合使用) |
常用调试命令
nginx -t
nginx -s reload
netstat -an | grep :80
tail -f /var/log/nginx/access.log
负载均衡拓扑图
通过此配置,Nginx可实现高效负载均衡,支持超高并发连接。关键点:合理分配服务器权重 + 智能健康检查 + 连接参数优化,三者结合可构建高可用Web服务架构。