前言
Nginx 提供了多种负载均衡的方式,每种方式都有不同的配置方法。以下是几种常见的负载均衡方式及其详细配置:
1. 轮询(Round Robin):
http {
upstream backend {
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
在这个配置中,多个后端服务器(backend1.example.com
和backend2.example.com
)被定义在 upstream
块中,然后通过 proxy_pass
指令将请求转发给后端服务器。
默认情况下,Nginx 使用轮询算法将请求分发给后端服务器。
2. IP 哈希(IP Hash):
http {
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
在这个配置中,ip_hash
指令用于启用 IP 哈希负载均衡算法,它会根据客户端的 IP 地址将请求定向到特定的后端服务器。这样可以确保相同的客户端 IP 总是被发送到同一台后端服务器处理。
3. 加权轮询(Weighted Round Robin):
http {
upstream backend {
server backend1.example.com weight=3;
server backend2.example.com weight=2;
}
server {
listen 80;
location / {
proxy_pass http://backend;
}
}
}
在这个配置中,每个后端服务器都附加了一个权重值。Nginx 会根据权重值决定将请求发送到哪个后端服务器。
上述配置中,backend1.example.com
的权重为 3,backend2.example.com
的权重为 2。这意味着前者将处理更多的请求。
4. 会话保持(Session Persistence):
http {
upstream backend {
ip_hash;
server backend1.example.com;
server backend2.example.com;
}
server {
listen 80;
location / {
proxy_pass http://backend;
# 开启会话保持
proxy_cookie_name SESSIONID;
proxy_cookie_path /;
}
}
}
在这个配置中,已经启用了 IP 哈希负载均衡算法。为了实现会话保持,使用 proxy_cookie_name
指令来设置会话 ID 的 Cookie 名称,并使用 proxy_cookie_path
指令指定会话 Cookie 的路径。
这样相同的客户端 IP 将始终被发送到同一台后端服务器处理,以保持会话的连续性。
请根据你的需求选择适合的负载均衡方式,并根据示例配置进行相应的修改和调整。