Nginx的知识2

158 阅读2分钟

这是我参与2022首次更文挑战的第25天,活动详情查看:2022首次更文挑战

实现负载均衡

Nginx分配服务器策略

  • 第一种 轮询(默认)

    每个请求按时间顺序逐一分配到不同的后端服务器,如果后端服务器 down 掉,能自动剔除。

  • 第二种 weight

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

  • 第三种 ip_hash

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

  • 第四种 least_conn(最少连接数)

    在一些要求需要更长的时间才能完成的应用情况下, 最少连接可以更公平地控制应用程序实例的负载。使用最少连接负载均衡,Nginx不会向负载繁忙的服务器上分发请求,而是将请求分发到负载低的服务器上。

  • 第五种 fair(第三方)

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

  • 第六种 url_hash(第三方)

    按访问url的hash结果来分配请求,使每个url定向到同一个后端服务器,后端服务器为缓存时比较有效。

名称模式
轮询默认方式
weight权重方式
ip_hash依据ip分配方式
least_conn最少连接方式
fair(第三方)响应时间方式
url_hash(第三方)依据URL分配方式

Nginx.conf(注意在http块中)

http {
......

    #负载均衡
    upstream myserver{
            #ip_hash;  #每个请求安访问的ip结果分配,这样每个访客固定访问这一个服务器,可以解决session的问题 
            #least_conn
            server xxx.xxx.xxx.xxx:8080;  #weight=1 ,设置权重
            server xxx.xxx.xxx.xxx:8081;  #weight=1
            #fair 根据响应时间来分配
    }

}

default.config

server {
    listen       80;
    server_name  39.97.180.158;

    #charset koi8-r;
    #access_log  /var/log/nginx/host.access.log  main;



    location / {
        #root   html;
        proxy_pass http://39.97.180.158:8080;
        index  index.html index.htm index.jsp;
    }


    location ~ /test/b.html {
        proxy_pass http://39.97.180.158:8081;
    }

   #负载均衡
    location ~ /test01/a.html{
        proxy_pass http://myserver;
    }
}

实现动静分离

两种方法:一种是纯粹把静态文件独立成单独的域名,放在独立的服务器上,也是目前主流推崇的方案;另外一种方法就是动态跟静态文件混合在一起发布,通过 nginx 来分开。

#实现动静分离,此静态文件在nginx服务器中
location ~ /www/{
    root /data/;
    index index.html index.jsp index.htm;
}

#实现动静分离,此静态文件在nginx服务器中
location ~ /image/{
    alias /data/image/;
    autoindex on; #即打开了目录浏览功能
}