upstream 是与proxy_pass 关联的命令
指令 | 作用 | 使用环境 |
---|---|---|
upstream | 与反向代理(proxy_pass、fastcgi_proxy),负载均衡相关的模块 | http |
proxy_pass | 设置被代理服务器端口或者套接字 | location ,if in location |
配置示例
# 可配置负载策略,下面的 default_xx 名称可以自定义,只有与下面proxy_pass后引用的名称一致即可
# upstream 是与server相同级别的配置项目
upstream default_xx {
server 127.0.0.10:8080 weight=6;
server 127.0.0.11:8080 weight=4;
server 127.0.0.12:8080 down;
}
server {
listen 80;
server_name www.nginxo.com;
location / {
# proxy_pass 代理配置
proxy_pass http://default_xx;
}
error_page 500 502 503 504 /50x.html;
location = /50x.html {
root html;
}
}
【upstream相关语法】 https://zhuanlan.zhihu.com/p/409693332
负载策略
默认是轮询,其他还包括:
1、权重(如上示例配置):访问概率和weight值成正比关系
upstream default {
server 127.0.0.10:8080 weight=6;
server 127.0.0.11:8080 weight=4;
server 127.0.0.12:8080 down;
}
2、ip_hash:(同一个客户端请求都会分发到同一服务器处理,解决session问题)
upstream default {
ip_hash
server 127.0.0.10:8080;
server 127.0.0.11:8080;
server 127.0.0.12:8080;
}
3、fair:按后端服务器的响应时间来请求分配,响应时间短的优先分配,需要安装第三方模块
4、url_hash:与ip_hash类似,不过是以url为标记
5、least_conn:把请求转发给连接数较少的后端服务器
负载均衡策略可以综合使用
upstream test {
ip_hash;
server 10.0.0.7:80 weight=10;
server 10.0.0.8:80 down(表示当前的server暂时不参加负载);
server 10.0.0.9:80;
server 10.0.0.10:80 backup(其他所有的非backup机器down或者忙的时候,请求backup机器);
}
生产环境可以使用lua脚本管理,简单使用其中某一种策略不太灵活、对扩展不友好
但也可以使用分布式session共享的方式
或者token无状态方式