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无状态方式

Logo

为开发者提供学习成长、分享交流、生态实践、资源工具等服务,帮助开发者快速成长。

更多推荐