load-balancer
Compare original and translation side by side
🇺🇸
Original
English🇨🇳
Translation
ChineseLoad Balancer Configuration
负载均衡器配置
Quick Start
快速开始
Configure nginx to distribute traffic across multiple backend servers with health checks and automatic failover.
配置Nginx以在多台后端服务器间分发流量,并具备健康检查和自动故障转移功能。
Instructions
操作步骤
Step 1: Define upstream block
步骤1:定义上游服务器块
Create an upstream block with your backend servers:
nginx
upstream backend {
# Load balancing method (optional, defaults to round-robin)
least_conn; # or ip_hash, or omit for round-robin
# Backend servers
server backend1.example.com:8080 weight=3;
server backend2.example.com:8080 weight=2;
server backend3.example.com:8080;
# Backup server (used when all primary servers are down)
server backup.example.com:8080 backup;
# Health check parameters
keepalive 32;
}创建包含你的后端服务器的上游服务器块:
nginx
upstream backend {
# Load balancing method (optional, defaults to round-robin)
least_conn; # or ip_hash, or omit for round-robin
# Backend servers
server backend1.example.com:8080 weight=3;
server backend2.example.com:8080 weight=2;
server backend3.example.com:8080;
# Backup server (used when all primary servers are down)
server backup.example.com:8080 backup;
# Health check parameters
keepalive 32;
}Step 2: Configure proxy in server block
步骤2:在服务器块中配置代理
Add proxy configuration to route traffic to the upstream:
nginx
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
# Essential proxy headers
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_set_header X-Forwarded-Proto $scheme;
# Timeouts
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
# Buffering
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
}
}添加代理配置以将流量路由到上游服务器:
nginx
server {
listen 80;
server_name example.com;
location / {
proxy_pass http://backend;
# Essential proxy headers
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_set_header X-Forwarded-Proto $scheme;
# Timeouts
proxy_connect_timeout 60s;
proxy_send_timeout 60s;
proxy_read_timeout 60s;
# Buffering
proxy_buffering on;
proxy_buffer_size 4k;
proxy_buffers 8 4k;
}
}Step 3: Add health checks
步骤3:添加健康检查
Configure passive health checks (active checks require nginx Plus):
nginx
upstream backend {
server backend1.example.com:8080 max_fails=3 fail_timeout=30s;
server backend2.example.com:8080 max_fails=3 fail_timeout=30s;
server backend3.example.com:8080 max_fails=3 fail_timeout=30s;
}Parameters:
- : Number of failed attempts before marking server as unavailable
max_fails - : Time to wait before retrying a failed server
fail_timeout
配置被动健康检查(主动检查需要Nginx Plus):
nginx
upstream backend {
server backend1.example.com:8080 max_fails=3 fail_timeout=30s;
server backend2.example.com:8080 max_fails=3 fail_timeout=30s;
server backend3.example.com:8080 max_fails=3 fail_timeout=30s;
}参数说明:
- : 将服务器标记为不可用之前的失败尝试次数
max_fails - : 重试失败服务器前的等待时间
fail_timeout
Step 4: Test and reload
步骤4:测试并重新加载配置
bash
undefinedbash
undefinedTest configuration
Test configuration
nginx -t
nginx -t
Reload nginx
Reload nginx
nginx -s reload
undefinednginx -s reload
undefinedLoad Balancing Methods
负载均衡算法
Round-robin (default): Distributes requests evenly across servers
nginx
upstream backend {
server backend1.example.com:8080;
server backend2.example.com:8080;
}Least connections: Routes to server with fewest active connections
nginx
upstream backend {
least_conn;
server backend1.example.com:8080;
server backend2.example.com:8080;
}IP hash: Routes same client IP to same server (session persistence)
nginx
upstream backend {
ip_hash;
server backend1.example.com:8080;
server backend2.example.com:8080;
}Weighted: Distributes based on server capacity
nginx
upstream backend {
server backend1.example.com:8080 weight=3; # Gets 3x traffic
server backend2.example.com:8080 weight=1;
}轮询(默认):在服务器间均匀分发请求
nginx
upstream backend {
server backend1.example.com:8080;
server backend2.example.com:8080;
}最少连接数:将请求路由到活跃连接数最少的服务器
nginx
upstream backend {
least_conn;
server backend1.example.com:8080;
server backend2.example.com:8080;
}IP哈希:将同一客户端IP的请求路由到同一服务器(会话持久化)
nginx
upstream backend {
ip_hash;
server backend1.example.com:8080;
server backend2.example.com:8080;
}加权轮询:根据服务器容量分发流量
nginx
upstream backend {
server backend1.example.com:8080 weight=3; # Gets 3x traffic
server backend2.example.com:8080 weight=1;
}Common Patterns
常见配置模式
WebSocket proxying
WebSocket代理
nginx
location /ws {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}nginx
location /ws {
proxy_pass http://backend;
proxy_http_version 1.1;
proxy_set_header Upgrade $http_upgrade;
proxy_set_header Connection "upgrade";
}Sticky sessions with cookie
基于Cookie的粘性会话
nginx
upstream backend {
server backend1.example.com:8080;
server backend2.example.com:8080;
# Requires nginx Plus or third-party module
sticky cookie srv_id expires=1h domain=.example.com path=/;
}nginx
upstream backend {
server backend1.example.com:8080;
server backend2.example.com:8080;
# Requires nginx Plus or third-party module
sticky cookie srv_id expires=1h domain=.example.com path=/;
}Slow start (nginx Plus)
慢启动(Nginx Plus)
nginx
upstream backend {
server backend1.example.com:8080 slow_start=30s;
server backend2.example.com:8080 slow_start=30s;
}nginx
upstream backend {
server backend1.example.com:8080 slow_start=30s;
server backend2.example.com:8080 slow_start=30s;
}Advanced
高级配置
For detailed information, see:
- Upstream Patterns - Advanced load balancing algorithms and patterns
- Health Checks - Comprehensive health check configuration
- Caching - Proxy caching strategies for load-balanced backends
如需详细信息,请参阅:
- 上游服务器模式 - 高级负载均衡算法与模式
- 健康检查 - 全面的健康检查配置
- 缓存 - 负载均衡后端的代理缓存策略