文章目录加载中

Nginx配置负载均衡

# Nginx 代理多个服务器

nginx 的优势之一是:可以代理多个服务器。

通俗来说,按照某些规则,将请求分配给对应的服务器。从而实现某些方面(请求量、服务器负载等等)的负载均衡。

# 基本配置

假设针对 a.com 域名的 http 服务,提供负载均衡。并且有多个后端服务,分别运行在本地服务(也可以是同一 vpc 下、或者远程服务器)的不同端口。

假设这些后端服务都是相同的逻辑,并且是无状态服务。

那么首先需要配置反向代理:

server {
    listen 80;
    server_name 193.112.241.232;

    location / {
        proxy_pass http://myservers;
    }
}

这里的 myservers 是 upstream 的 name(往下看就明白了)。

# 负载均衡的各种策略(upstream)

1、普通轮询

upstream myservers {
    server 127.0.0.1:4445;
    server 127.0.0.1:4446;
}

2、按权重轮询

upstream myservers {
    server 127.0.0.1:4445 weight=10;
    server 127.0.0.1:4446 weight=1;
}

3、ip hash:相同的 ip 负载到同一个 upstream server

upstream myservers{
    ip_hash;
    server 127.0.0.1:4445 weight=1;
    server 127.0.0.1:4446 weight=2;
}

4、一致性 hash

upstream myservers{
    hash $custom_key consistent;
    server 127.0.0.1:4445 weight=2;
    server 127.0.0.1:4446 weight=1;
}

5、自定义 hash 规则:可以使用 Nginx 变量

upstream myservers{
    hash $uri;
    server 127.0.0.1:4445
    server 127.0.0.1:4446;
}
本文来自心谭博客:xin-tan.com,经常更新web和算法的文章笔记,前往github查看目录归纳:github.com/dongyuanxin/blog