Nginx之负载均衡、静态代理与动态代理配置
作者:mmseoamin日期:2024-02-20

Nginx之负载均衡配置

文章目录

  • Nginx之负载均衡配置
  • 1. 负载均衡基本配置
    • 1. 配置upstream
    • 2. 配置location
    • 3. 访问
    • 2. Nginx常用负载均衡策略
      • 1. 轮询(默认)
      • 2. 权重
      • 3. ip_hash策略
      • 4. 最少连接策略
      • 5. 负载均衡其他几个配置
      • 3. 静态代理
        • 1. 基于静态在一文件后缀的匹配
        • 2. 基于静态资源文件目录的匹配
        • 4. 动静分离
          • 1. 动态资源
          • 2. 静态资源
          • 3. 动静分离示例

            1. 负载均衡基本配置

            1. 配置upstream

            upstream www.jinshengyuan.com {
            	server 192.168.31.100:8080;
            	server 192.168.31.101:8081;
            }
            

            2. 配置location

            location可以配多个

            location /demo {
            	proxy_pass http://www.jinshengyuan.com;
            }
            
            

            3. 访问

            打开浏览器,输入http://www.jinshengyuan.com进行访问

            2. Nginx常用负载均衡策略

            1. 轮询(默认)

            每个请求轮流分配到不同的服务器,如果某一台服务器宕掉,将自动剔除已经宕掉的服务器而转发到运行正常的服务器。

            2. 权重

            每个请求按一定的比例分发到不同的服务器,weight值越大访问的几率越大,用于后端服务器性能不均的情况

            upstream www.jinshengyuan.com {
            	server 192.168.31.100:8080 weight=1;
            	server 192.168.31.101:8081 weight=3;
            }
            

            3. ip_hash策略

            ip_hash也叫IP绑定,每个请求按访问的IP的hash值分配,这样每个访问客户端会固定访问一个后端服务器,可以解决会话Session共享的问题;

            如hash(“192.168.31.110”) %2 = 0 或1,这种规则

            这种策略在IP不变的情况下会一直访问其中的某一台服务器,而非在各个服务器中来回切换

            配置如下:

            upstream www.jinshengyuan.com {
            	server 192.168.31.100:8080;
            	server 192.168.31.101:8081;
            	ip_hash; # IP绑定
            }
            

            4. 最少连接策略

            web请求会被转发大连接数最少的服务器上;

            配置如下:

            upstream www.jinshengyuan.com {
            	server 192.168.31.100:8080;
            	server 192.168.31.101:8081;
            	least_conn; # 最少连接策略
            }
            

            5. 负载均衡其他几个配置

            1. backup

              其他所有的非backup机器down的时候,才请求backup机器

            如下

            upstream www.jinshengyuan.com {
            	server 192.168.31.100:8080;
            	server 192.168.31.101:8081 backup; # 备用服务器,其他服务器宕机了才会请求此服务器
            }
            
            1. down

              down表示当前的sever是down的状态,不参与负载均衡

            如下:

            upstream www.jinshengyuan.com {
            	server 192.168.31.100:8080;
            	server 192.168.31.101:8081 down; # 此服务不参与负载均衡
            }
            

            3. 静态代理

            把所有静态资源的访问改为nginx,而不是访问tomcat,因为你滚下更擅长与静态资源的处理,性能更好,效率更高。

            所以在实际应用中,我们将静态资源比如图片,css,html,js等交给nginx处理,而不是由tomcat处理。

            1. 基于静态在一文件后缀的匹配

            通过在nginx.conf配置文件中添加静态资源的location,比如:

            当访问静态资源,则从D:/demo/static目录下获取(举例)

            location ~.*\.(js|css|html|gif|jpg|png|swf|ioc|zip|txt|doc|docx|xls|pdf|xlsx|mp3|ppt|flv)$ {
            	root D:/demo/static;
            }
            

            ~ 表示正则匹配,也就是后面的内容可以是正则表达式匹配;

            第一个 . 表示任意字符;

            ***** 表示一个或多个字符;

            \. 是转义字符,是后面这个点的转移字符;

            | 表示或者

            $ 表示结尾

            2. 基于静态资源文件目录的匹配

            将镜头在一放入D:/demo/static目录下,然后当用户访问时由nginx返回这些静态资源

            location ~.*/(css|js|images){
            	root D:/demo/static;
            }
            

            4. 动静分离

            nginx的负载均衡和静态代理结合在一起,可以实现动静分离,这是实际应用中常见的一种场景。

            动静分离各司其职,专注于自己擅长的事情,充分利用了它们各自的优势,从而达到更高效合理的架构。

            1. 动态资源

            如jsp由tomcat或其他web服务器完成

            2. 静态资源

            如图片,css,js等由nginx服务器完成

            3. 动静分离示例

            Nginx之负载均衡、静态代理与动态代理配置,在这里插入图片描述,第1张

            Nginx在一台服务器上安装一份,可以拷贝为多个nginx.conf文件启动多个Nginx,每个Nginx配置文件不一样即可。