【nginx】

nginx负载均衡的五种算法

目录

  • 1.round robin(默认)
  • 2.weight
  • 3. IP_hash
  • 4.url_hash(第三方)
  • 5. fair(第三方)

1.round robin(默认)

轮询方式,依次将请求分配到各个后台服务器中,默认的负载均衡方式。 
适用于后台机器性能一致的情况。 
挂掉的机器可以自动从服务列表中剔除。

2.weightt

根据权重来分发请求到不同的机器中,指定轮询几率,weight和访问比率成正比,用于后端服务器性能不均的情况。  

例如:  

upstream bakend {    

server 192.168.0.14 weight=10;    

server 192.168.0.15 weight=10;    

}  

 3. IP_hash

根据请求者ip的hash值将请求发送到后台服务器中,可以保证来自同一ip的请求被打到固定的机器上,可以解决session问题。

例如:

upstream bakend {    

ip_hash;    

server 192.168.0.14:88;    

server 192.168.0.15:80;    

}   

 

  • 4.url_hash(第三方)(第三方)

根据请求的url的hash值将请求分到不同的机器中,当后台服务器为缓存的时候效率高。

例如:

在upstream中加入hash语句,server语句中不能写入weight等其他的参数,hash_method是使用的hash算法  

upstream backend {    

server squid1:3128;    

server squid2:3128;    

hash $request_uri;    

hash_method crc32;    

}  

tips:  

 

upstream bakend{#定义负载均衡设备的Ip及设备状态    

ip_hash;    

server 127.0.0.1:9090 down;    

server 127.0.0.1:8080 weight=2;    

server 127.0.0.1:6060;    

server 127.0.0.1:7070 backup;    

 

在需要使用负载均衡的server中增加  

proxy_pass http://bakend/; 

每个设备的状态设置为: 

1.down 表示单前的server暂时不参与负载  
2.weight 默认为1.weight越大,负载的权重就越大。  
3.max_fails :允许请求失败的次数默认为1.当超过最大次数时,返回proxy_next_upstream 模块定义的错误  
4.fail_timeout:max_fails次失败后,暂停的时间。  
5.backup: 其它所有的非backup机器down或者忙的时候,请求backup机器。所以这台机器压力会最轻。  
nginx支持同时设置多组的负载均衡,用来给不用的server来使用。  
client_body_in_file_only 设置为On 可以讲client post过来的数据记录到文件中用来做debug  
client_body_temp_path 设置记录文件的目录 可以设置最多3层目录  
location 对URL进行匹配.可以进行重定向或者进行新的代理 负载均衡

5. fair(第三方)

根据后台响应时间来分发请求,响应时间短的分发的请求多。

例如:

upstream backend {    

server server1;    

server server2;    

fair;    

}  

 

nginx 过滤某个url请求

 

最近上线一个业务,结果这个接口的业务逻辑查库末加索引,数据库直接boom,只能临时处理,将这个接口的请求过滤,不经过后端逻辑直接返回。nginx 配置修改如下:

 



  • server


  • {


  •         listen 80;


  •         server_name xx.xx.com;


  •         index index.html index.htm index.php;


  •         root  /data/xxx;


  •         charset utf-8;


  •         location ~.*\.(css|js|swf|jpg|gif|png|jpep|jpg|mp3|xx|xmlbak|xml)$ {


  •                 expires       720h;


  •         }


  •  


  •         location ~ .*\.php$


  •         {


  •                 include fcgi.conf;


  •                 fastcgi_pass  127.0.0.1:xxx;


  •                 fastcgi_index index.php;


  •                 expires off;


  •         }


  •         ##过滤段


  •         location ~ / {


  •             if ( $query_string ~* ^(.*)?s=test/xxx/getAAInfo ){


  •                 return 555;


  •                }


  •         }


  •  


  •         access_log  /data/logs/xxx.log  access;


  • }

nginx 正则表达式

=开头表示精确匹配,如 A 中只匹配根目录结尾的请求,后面不能带任何字符串。

^~ 开头表示uri以某个常规字符串开头,不是正则匹配

~ 开头表示区分大小写的正则匹配;

~* 开头表示不区分大小写的正则匹配

.*   .匹配任意字符,*匹配数量0到正无穷;

\.   \转义,匹配. 

/ 通用匹配, 如果没有其它匹配,任何请求都会匹配到

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值