原文链接:http://blog.csdn.net/soar_away/article/details/51980247
我们经常遇到这种情况, 服务器资源有限,但是客户端来的请求在不断的上涨, 为了保证一部分的请求能够正常相应, 不得不放弃一些客户端来的请求, 这个时候我们会选择行的进行一些NGINX的限流操作, 这种操作可以很大程度上缓解服务器的压力, 使其他正常的请求能够得到正常响应.
nginx 限流的策略有多种, 下面我们来聊聊常见的集中限流策略.
1. 针对固定IP进行限流, 这种策略主要用于同一个IP反复请求服务器,类似于洪水攻击或者DDos攻击,对单一ID进行限制可以有效的
对单一IP的限制的配置
limit_zone 是对于每个 IP 分配session空间, 总共空间大小为30M one 定义了一个名称, $bin_remote_add 即为一个IP地址
limit_req_zone 是对请求频率进行限制, 10 req/second的IP允许访问
2. 针对IP限制并发请求
这是设置IP并发 最多8个并发请求 同一个IP
3. 配置白名单
白名单的作用就是 对某些特定的IP不做请求限制,比如我们自己的IP,或者公司内网的IP等.
白名单放在 conf/whiteip.conf 文件里面.whitip.conf 的格式key value的格式, 就是特定的IP可以映射到空的字符串, 这样就不会对它进行限制操作了
配置白名单的 方法在官网有详细说明, 可以看这里.
4. 负载均衡可能也算一种吧 , 当然他是把自己的流量倒到别的机子上去而已
nginx 的负载均衡 配置的字段是upstream
稍微解释一下 upstream 的配置,
1. down 表示这台服务器不参与负载均衡
2. weight 默认为1 , weight 值越大, 分配的请求也越多
3. max_fails 允许请求的最多失败数目, 超过最大次数是, 返回proxy_next_upstream 模块定义的错误
4. fail_timeout : 标示失败多少次以后 就不响应了
5. back_up: 备用机 , 如果 其他机子忙或者挂了可以访问backup机子