Nginx通过upstream模块来实现简单的负载均衡
在upstream块内,定义一个服务器列表,默认的方式是轮询,如果要确定同一个
访问者发出的请求总是由同一个后端服务器来处理,可以设置ip_hash,如:
upstream lb.com {
ip_hash
server 127.0.0.1:9080 weight=5;
server 127.0.0.1:8080 weight=5;
server 127.0.0.1:1111;
}
请注意:这个方法本质还是轮询,而且由于客户端的ip可能是不断变化的,比如动
态ip,代理,翻墙等等,因此ip_hash并不能完全保证同一个客户端总是由同一
个服务器来处理。
Geo和GeoIP模块
这两个模块主要用于做全局的负载均衡,可以根据不同的客户端ip来访问不同的
服务器,示例如下:
http{
geo $geo{
default default; #缺省时访问default服务器
202.103.10.1/24 A;#ip在这个区段访问A服务器
179.9.0.3/24 B;#ip在这个区段访问B服务器
}
upstream default.server{
server 192.168.0.100;
}
upstream A.server{
server 192.168.0.101;
}
upstream B.server{
server 192.168.0.102;
}
server{
listen 80;
location / {
proxy_pass http://$geo.server$request_uri;
}
}
}