• Nginx04 反向代理和负载均衡


    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;
    }
  • 相关阅读:
    pyinstaller 打包后无法运行
    Android Uiautomator2 gradlew 坑
    JNDI 在 J2EE 中的角色
    23种设计模式
    Struts2工作原理
    SpringMVC工作原理
    堆内存设置
    安装和使用 memcached
    SQL面试题及答案
    30多条mysql数据库优化方法,千万级数据库记录查询轻松解决
  • 原文地址:https://www.cnblogs.com/jthr/p/16827617.html
Copyright © 2020-2023  润新知