nginx负载均衡
使用客户端的真实ip进行hash
在经过多层代理后,ip_hash获取到的是服务器的ip,客户端真实ip需要从$http_x_forwarded_for获取;
在http模块下增加map模块,返回客户端ip,在upstream模块中使用map的第二个参数进行hash;
http {
#参数映射(根据第一个属性的值,从下方列表中匹配值,返回到第二个属性)
map $http_x_forwarded_for $client_real_ip {
# 获取第一个ip
~^(?P<first_addr>[0-9.]+),?.*$ $first_addr;
# 如果http_x_forwarded_for为空则使用remote_addr服务器ip
"" $remote_addr;
}
# 负载均衡服务池
upstream practiceBoot {
hash $client_real_ip;
server 192.168.1.100:8080; # 后端服务器1
server 192.168.1.101:8080; # 后端服务器2
}
server {
listen 80;
# 使用上游服务器组进行负载均衡
location /practice{
proxy_pass http://practiceBoot/practice;# 将请求代理到上游服务器组
# 可以添加其他代理相关的配置,如代理超时、缓冲区大小等
}
}
}
轮询
轮询是默认负载均衡模式,每个请求按照顺序分配给后端服务器,保证每个服务器平等负载。
http {
# 定义上游服务器组
upstream practiceBoot {
server 192.168.1.100:8080; # 后端服务器1
server 192.168.1.101:8080; # 后端服务器2
# 可以继续添加更多的后端服务器
}
server {
listen 80;
# 使用上游服务器组进行负载均衡
location /practice {
proxy_pass http://practiceBoot/practice; # 将请求代理到上游服务器组
# 可以添加其他代理相关的配置,如代理超时、缓冲区大小等
}
}
}
IP Hash
通过对客户端IP地址计算出一个Hash值,再将该值与后端服务器列表进行匹配,实现同一客户端访问同一服务器的功能。
http {
# 定义上游服务器组
upstream practiceBoot {
ip_hash;
server 192.168.1.100:8080; # 后端服务器1
server 192.168.1.101:8080; # 后端服务器2
# 可以继续添加更多的后端服务器
}
server {
listen 80;
# 使用上游服务器组进行负载均衡
location /practice {
proxy_pass http://practiceBoot/practice; # 将请求代理到上游服务器组
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
# 其他代理设置...
}
}
}
最少连接
将请求发送到当前连接数最少的服务器,以实现最均衡的负载均衡。
http {
# 定义上游服务器组
upstream practiceBoot {
least_conn; # 使用最少连接策略
server 192.168.1.100:8080; # 后端服务器1
server 192.168.1.101:8080; # 后端服务器2
# 可以继续添加更多的后端服务器
}
server {
listen 80;
# 使用上游服务器组进行负载均衡
location /practice {
proxy_pass http://practiceBoot/practice; # 将请求代理到上游服务器组
# 可以添加其他代理相关的配置,如代理超时、缓冲区大小等
}
}
}
基于请求URI的负载均衡
可以通过反向代理设置规则,根据请求URI的不同将请求分配到相应的服务器上。
http {
# 定义上游服务器组
upstream practiceBoot {
hash $uri;
server 192.168.1.100:8080; # 后端服务器1
server 192.168.1.101:8080; # 后端服务器2
# 可以继续添加更多的后端服务器
}
server {
listen 80;
# 使用上游服务器组进行负载均衡
location /practice {
proxy_pass http://practiceBoot/practice; # 将请求代理到上游服务器组
# 可以添加其他代理相关的配置,如代理超时、缓冲区大小等
}
}
}
© 版权声明
文章版权归作者所有,未经允许请勿转载。
相关文章
暂无评论...