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