语法格式
upstream 负载名 {
[ip_hash;]
server ip:port [weight=数字] [down];
server ip:port [weight=数字];
}
#[]内容为可选项
轮询(默认)
upstream order {
server 192.168.0.128:8383;
server 192.168.244.233:8383;
}
不配置weight(即默认weight均为1)
每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器down掉,能自动剔除。
weight
upstream order {
server 192.168.0.128:8383 weight=3;
server 192.168.244.233:8383 weight=1 down;
}
指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。
down 暂时不参与负载
ip_hash
upstream order {
ip_hash;
server 192.168.0.128:8383;
server 192.168.244.233:8383;
}
每个请求按访问ip的hash结果分配,这样同一客户端的请求总是发往同一个后端服务器,可以解决session的问题(轻量级的解决方式)。
代理时的负载使用
格式:proxy_pass http://负载名;
把这里的负载名理解成代理配置里的 ip:端口号
示例:
server {
listen 80;
server_name test.location.com;
本机ip地址:192.168.100.104
#后端服务路径:
http://192.168.100.105:8080/user/query?id=1
#规则一:
#访问路径:http://test.location.com/user/query?id=1
location /user {
#path1:/user path2:/query
#ip:port 后面无 /
proxy_pass http://192.168.0.105:8080;
}
规则二:
#访问路径 :http://test.location.com/A/user/query?id=1
location /A/user {
#path1:/A/user path2:/query
#ip:port 后面有 /xxx
proxy_pass http://192.168.0.105:8080/user;
}
#以上是回顾 proxy_pass 功能
#后端服务路径:http://192.168.0.128:8383/enjoy/getPage
#实际访问路径:http://test.location.com/order/enjoy/getPage
upstream order {
server 192.168.0.128:8383;
server 192.168.244.233:8383;
}
location /order/enjoy {
#path1:/order/enjoy path2:/getPage
proxy_pass http://order/enjoy;
#这里的order是负载名,和location后面的值无关
#这么配是用 /order/enjoy 替代了 /enjoy
}
}
如果不清楚代理,可以看前一篇文章:
Nginx 配置 location 模块实现路由(代理转发、重定向)功能
参考:Peter——Nginx进阶-第二版笔记
2万+





