nginx负载
如果你希望在 Nginx 的 upstream
配置中使用哈希(hash)策略来分发请求,可以使用 hash
指令。这种策略根据请求的特定参数(如客户端 IP 或请求 URI)来决定将请求转发到哪个后端服务器。以下是如何配置哈希负载均衡的详细步骤。
# 1. 使用 Hash 策略的 Nginx 配置示例
下面是一个示例,展示如何使用哈希策略配置 Nginx,使其根据客户端 IP 地址进行负载均衡。
http {
upstream backend {
hash $remote_addr; # 使用客户端 IP 地址进行哈希
server backend1.example.com:80; # 第一台后端服务器
server backend2.example.com:80; # 第二台后端服务器
server backend3.example.com:80; # 第三台后端服务器(如果有)
}
server {
listen 80; # 监听的端口
location / {
proxy_pass http://backend; # 将请求转发到后端服务器
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;
}
}
}
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 2. 配置说明
hash $remote_addr;
: 这行指令告诉 Nginx 使用请求的客户端 IP 地址进行哈希,从而确定将请求转发到哪个后端服务器。server backend1.example.com:80;
: 列出所有后端服务器,Nginx 会根据哈希值选择相应的服务器。
# 3. 其他哈希选项
- 根据请求 URI: 如果希望根据请求的 URI 哈希,可以这样配置:
hash $request_uri; # 使用请求的 URI 进行哈希
1
- 自定义哈希参数: 也可以使用其他变量,例如
$http_user_agent
来根据用户代理进行哈希。
# 4. 配置权重
如果需要为某些后端服务器分配不同的权重,可以在 server
指令中添加 weight
参数。例如:
server backend1.example.com:80 weight=3; # 权重为 3
server backend2.example.com:80 weight=1; # 权重为 1
1
2
2
# 5. 检查和重启 Nginx
在保存配置后,确保检查 Nginx 配置是否正确:
sudo nginx -t
1
然后重启或重新加载 Nginx:
sudo systemctl restart nginx
1
# 6. 测试配置
访问 Nginx 服务器的 IP 地址或域名,检查请求是否被正确转发到后端服务器,并观察不同的客户端 IP 是否总是被转发到相同的后端服务器。
# 总结
通过以上步骤,你可以在 Nginx 中使用哈希策略来实现负载均衡,使请求根据特定参数(如客户端 IP 或请求 URI)进行分配。
在线编辑 (opens new window)
上次更新: 2025/02/25, 18:30:54