• Nginx反向代理与负载均衡


    Nginx命令


    # 查看nginx版本
    nginx -v
    # 检查nginx配置文件语法是否正确
    nginx -t
    # 指定使用的配置文件
    nginx -c file
    # 停止
    nginx -s stop 
    # 安全退出
    nginx -s quit
    # 重新加载配置文件
    nginx -s reload
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12

    代理nacos集群


    upstream nacos-cluster {
        server 127.0.0.1:8845 weight=1;
    	server 127.0.0.1:8846 weight=2;
    	server 127.0.0.1:8847 weight=3;
    }
    
    server {
        listen       80;
        server_name  localhost;
    
        location /nacos {
            proxy_pass http://nacos-cluster;
        }
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14

    配置文件


    • 全局配置选项
      worker_processes : 指定工作进程的数量,用于处理客户端请求
      error_log: 指定错误日志文件的路径和级别
      events: 设置事件模型,包括使用的事件驱动器和连接数
      http: 指定http相关的配置选项
    • http配置选项
      server: 配置虚拟主机,指定监听的IP地址和端口号
      location: 配置请求匹配规则和处理方式
      proxy_pass: 配置反向代理,将请求转发到指定的后端服务器
      root: 指定静态文件的根目录
      index: 指定默认的索引文件
      try_files: 指定查找文件的规则

    location指令


    • 精确匹配: 使用=前缀,例如location = /about,只匹配精确路径为/about的请求。
    location = /about {  
        # 处理/about请求的配置  
    }
    
    • 1
    • 2
    • 3
    • 前缀匹配: 默认情况下,location配置是前缀匹配,例如location /path,匹配以/path开头的请求。如果有多个前缀匹配,Nginx会按照配置中的顺序进行匹配,并使用第一个匹配成功的location。
    location /static {  
        # 处理以/static开头的请求  
    }
    
    • 1
    • 2
    • 3
    • 正则匹配: 使用~前缀,例如location ~ \.php$,匹配以.php结尾的请求。还可以使用~*前缀进行不区分大小写的正则匹配。如果有多个正则匹配,Nginx会按照正则表达式的顺序进行匹配,并使用第一个匹配成功的location。
    location ~ \.php$ {  
        # 处理以.php结尾的请求  
    }
    
    • 1
    • 2
    • 3
    • 最长前缀匹配: 使用^~前缀,例如location ^~ /path,匹配以/path开头的请求,并停止匹配其他location配置。这可以用于避免正则匹配的复杂性和性能开销,同时确保某些路径具有更高的优先级。
    location ^~ /images/ {  
        # 处理以/images/开头的请求,并停止匹配其他location  
    }
    
    • 1
    • 2
    • 3

    负载均衡规则


    • 轮询 (默认)
    	upstream nacos {
    		server 127.0.0.1:8845 ;
    		server 127.0.0.1:8846 ;
    		server 127.0.0.1:8847 ;
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • weight

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

    	upstream nacos {
    		server 127.0.0.1:8845 weight=1;
    		server 127.0.0.1:8846 weight=2;
    		server 127.0.0.1:8847 weight=3;
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • ip_hash

    ip_hash 每个请求按访问 ip 的 hash 结果分配,这样每个访客固定访问一个后端服务器

    	upstream nacos {
    		ip_hash;
    		server 127.0.0.1:8845 ;
    		server 127.0.0.1:8846 ;
    		server 127.0.0.1:8847 ;
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • fair

    fair(第三方),按后端服务器的响应时间来分配请求,响应时间短的优先分配。

    	upstream nacos {
    		fair;
    		server 127.0.0.1:8845 ;
    		server 127.0.0.1:8846 ;
    		server 127.0.0.1:8847 ;
    	}
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • Least Connections

    Nginx会选择当前活动连接数最少的后端服务器来处理请求。

    http {  
        upstream backend {  
            least_conn;  
            server backend1.example.com;  
            server backend2.example.com;  
        }  
      
        server {  
            listen 80;  
      
            location / {  
                proxy_pass http://backend;  
            }  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
    • 15
    • Backup

    如果所有非备份服务器都宕机或繁忙,请求将被发送到标记为backup的服务器。

    http {  
        upstream backend {  
            server backend1.example.com;  
            server backend2.example.com backup;  
        }  
      
        server {  
            listen 80;  
      
            location / {  
                proxy_pass http://backend;  
            }  
        }  
    }
    
    • 1
    • 2
    • 3
    • 4
    • 5
    • 6
    • 7
    • 8
    • 9
    • 10
    • 11
    • 12
    • 13
    • 14
  • 相关阅读:
    Tableau2019.2 连接MongoDB数据库
    chrome扩展程序开发请求接口报错
    [洛谷]P2313 [HNOI2005] 汤姆的游戏(模拟)
    基于兰彻斯特法则的通信运营商竞争形势研究
    2. 一步步搭建多层神经网络及应用
    奶气萌娃的声音怎么做?一个简单的小方法,奶娃配音轻松拿捏
    Java 面试题 (一) --------- Java 基础
    ClickHouse 存算分离改造:小红书自研云原生数据仓库实践
    1、Spring IOC的理解要点
    医保移动支付和接口对接开发
  • 原文地址:https://blog.csdn.net/zhyaw56zhu/article/details/136386360