Nginx负载均衡配置

1、环境:一台宿主机Nginx + 2台Docker环境的Nginx

2、配置宿主机Nginx.conf文件

在http段加入以下代码:

upstream www.abc.top { 
      server  192.168.83.172:8081 weight=10; 
      server  192.168.83.172:8082 weight=20; 
} 

server{ 
    listen 80; 
    server_name www.abc.top; 
    location / { 
        proxy_pass         http://www.abc.top; 
        proxy_set_header   Host             $host; 
        proxy_set_header   X-Real-IP        $remote_addr; 
        proxy_set_header   X-Forwarded-For  $proxy_add_x_forwarded_for; 
    } 
}

3、docker环境执行命令

docker run -d -p 8081:80 -v /mnt/test/Work/nginx:/var/www/html --name xy_nginx2 nginx:1.10.3

docker run -d -p 8082:80 -v /mnt/test/Work/nginx:/var/www/html --name xy_nginx2 nginx:1.10.3

4、测试结果

Nginx负载均衡配置

5、备注:

1)ip_hash:在有些场景下,我们可能会希望来自某一个用户的请求始终落到固定的一台上游服务器中,假如,假设上游服务器会缓存一些信息,如果同一个用户的请求任意地转发到集群中的任一台上游服务器中,那么每一台上游服务器都有可能会缓存同一份信息,这既会造成资源的浪费,也会难以有效地管理缓存信息,ip_hash就是用以解决上述问题,它首先根据客户端的IP地址计算出一个key,将key按照upstream集群里的上游服务器数量进行取模,然后以取模后的结果把请求转发到相应的上游服务器中,这样就确保了同一个客户端的请求只会转发到指定的上游服务器中,ip_hash与weight(权重)配置不可同时使用,如果upstream集群中有一台上游服务器暂时不可用,不能直接删除该配置,而是要down参数标识,确保转发策略的一惯性

upstream backend{
         ip_hash;
         server 192.168.83.172:8081;
         server 192.168.83.172:8082  down; 
         server 192.168.83.172:8083;
}