1 反向代理介绍

  https://www.cnblogs.com/jthr/p/16827214.html

 

2 负载均衡介绍

  https://www.cnblogs.com/jthr/p/16827328.html

 

3 Nginx的反向代理配置

3.1 配置server

  把location下面的root和index配置注释掉,添加proxy_pass配置,值就是代理的地址。

  注意,这里proxy_pass的地址要支持https的话还其它需要额外的配置。

    server {
        listen       80;
        server_name  nginx1.com;

        location / {
            proxy_pass   http://www.atguigu.com;
            #root   /usr/local/mynginx/nginx1;
            #index  index.html index.htm;
        }


        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }

       
    }

 

3.2 访问nginx1.com

  执行命令:systemctl reload nginx重新加载nginx

  浏览器的地址栏还是nginx1.com,代理成功

 

4 Nginx的负载均衡配置

4.1 启动两个服务

  先在计算机上启动两个服务

  192.168.28.1:8081

  192.168.28.1:8082

  它们分别提供一个接口

@RestController
@RequestMapping("/api")
public class NginxController1 {
    @GetMapping
    public String test1(){
        return "success test1 8081";
    }
}
@RestController
@RequestMapping("/api")
public class NginxController1 {
    @GetMapping
    public String test1(){
        return "success test1 8082";
    }
}

 

4.2 配置nginx

1)配置serer

  修改proxy_pass的值:http://httpadr; 其中httpadr是一个别名,随便取名字

    server {
        listen       80;
        server_name  nginx1.com;

        location / {
            proxy_pass   http://httpadr/api;
            #root   /usr/local/mynginx/nginx1;
            #index  index.html index.htm;
        }


        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

 

2)配置upstream

  upstream是和server同级别的

  注意:upstream 后面接的httpadr要和上面的别名对应上(http://httpadr/api;),这样组合就形成完整的路径http://192.168.28.1:8081/api,http://192.168.28.1:8082/api

upstream httpadr{
      server  192.168.28.1:8081;
      server  192.168.28.1:8082;
   }

server {
        listen       80;
        server_name  nginx1.com;

        location / {
            proxy_pass   http://httpadr/api;
            #root   /usr/local/mynginx/nginx1;
            #index  index.html index.htm;
        }


        error_page   500 502 503 504  /50x.html;
        location = /50x.html {
            root   html;
        }
    }

 

4.3 访问nginx1.com

  执行命令:systemctl reload nginx重新加载nginx

  

 

 

4.4 负载均衡策略

  默认情况下,nginx采用的是轮询策略,nginx还提供了其他几种常用的负载均衡配置

 

4.4.1 轮询

upstream bakend {  
    server 192.168.0.1;    
    server 192.168.0.2;  
}

 

4.4.2 weight

  weight代表权重,默认为1,权重越高,被分配的客户端请求就会越多

 upstream webservers{
      server  192.168.9.134:8081 weight=8;
      server  192.168.9.134:8082 weight=2;
   }

 

4.4.3 ip_hash

每个请求按访问IP的hash结果进行分配,这样每个访客就可以固定访问一个后端服务,一定程度上可以解决session问题

upstream bakend {  
    ip_hash;  
    server 192.168.0.1:88;  
    server 192.168.0.2:80;  
} 

 

4.4.4 fair(需要第三方插件)

  按后端服务器的响应时间来分配请求,响应时间短的将会被优先分配

upstream webservers{
        server 192.168.9.134:8081;
        server 192.168.9.134:8082;
        fair;
}

 

4.4.5 url_hash(需要第三方插件)

  按访问URL的hash结果分配。这样相同的url会被分配到同一个节点,主要为了提高缓存命中率。比如,为了提高访问性能,服务端有大量数据或者资源文件需要被缓存。使用这种策略,可以节省缓存空间,提高缓存命中率

upstream webservers{
    hash &request_uri;
    server 192.168.9.134:8081;
    server 192.168.9.134:8082;
}

 

4.4.6 least_conn

  按节点连接数分配,把请求优先分配给连接数少的节点。该策略主要为了解决,各个节点请求处理时间长短不一造成某些节点超负荷的情况

upstream webservers{
    least_conn;
    server 192.168.9.134:8081;
    server 192.168.9.134:8082;
}