Nginx教程

分布式中间件-Nginx(二)

本文主要是介绍分布式中间件-Nginx(二),对大家解决编程问题具有一定的参考价值,需要的程序猿们随着小编来一起学习吧!

4、限流定义

limit_conn_zone $server_name(请求限流对象名称) zone=perserveer:10m(请求量大小); ---服务端限流

location /{

  limit_conn perserver 1;(并发量配置)
  proxy_pass http://localhost://xxx;

}

缺点:和客户端无关,导致正常客户无法使用

解决方法:客户端限流
limit_conn_zone $binary_remote_addr(获取客户端ip地址) zone=perserveer:10m(请求量大小); ---客户端限流

location /{

  limit_conn perserver 1;(客户端并发量配置)
  proxy_pass http://localhost://xxx;

}

5、平滑限流  解决类似 客户端只能处理1000个并发,高峰100万请求,进行分片

limit_req_zone $binary_remote_addr zone=one:10m rate=1000r/s;(每s处理1000个,1ms处理一个,可能会导致全部请求失败)

location /{

  limit_req zone=one;
  proxy_pass http://localhost://xxx;

}

使用“令牌桶”算法实现
1ms处理一次,1ms生成一个token放到zone(桶),1ms来3个请求,只能生成一个token,2个请求会出现失败;

允许突发量

burst=3允许的突发量;每毫秒允许生成3个token存在一个缓冲的队列中;

location /{

  limit_req zone=one burst=3;
  proxy_pass http://localhost://xxx;

}

nodelay 不允许延迟 (不需要token)

location /{

  limit_req zone=one burst=3 nodelay;
  proxy_pass http://localhost://xxx;

}

限流缺点
全局限流,通常情况下对某些接口进行限流,配置指定路径(学习URL匹配);

location=/api/getProduct{

  limit_req zone=one burst=3 nodelay;
  proxy_pass http://localhost://xxx;

}

6、http代理不安全,更换https(需要证书)
  https的虚拟主机

  ssk_certificate xxxx/server-cert.pem
       ssk_certificate_key xxxx/server-key.pem
      待续……

 

这篇关于分布式中间件-Nginx(二)的文章就介绍到这儿,希望我们推荐的文章对大家有所帮助,也希望大家多多支持为之网!