NGINX限流的一些思考
2016-07-21 10:32
447 查看
我们经常遇到这种情况, 服务器资源有限,但是客户端来的请求在不断的上涨, 为了保证一部分的请求能够正常相应, 不得不放弃一些客户端来的请求, 这个时候我们会选择行的进行一些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限制并发请求
3. 配置白名单
白名单的作用就是 对某些特定的IP不做请求限制,比如我们自己的IP,或者公司内网的IP等.
白名单放在 conf/whiteip.conf 文件里面.whitip.conf 的格式key value的格式, 就是特定的IP可以映射到空的字符串, 这样就不会对它进行限制操作了
配置白名单的 方法在官网有详细说明, 可以看这里.
GEO 用法 MAP用法
4. 负载均衡可能也算一种吧 , 当然他是把自己的流量倒到别的机子上去而已
nginx 的负载均衡 配置的字段是upstream
稍微解释一下 upstream 的配置,
1. down 表示这台服务器不参与负载均衡
2. weight 默认为1 , weight 值越大, 分配的请求也越多
3. max_fails 允许请求的最多失败数目, 超过最大次数是, 返回proxy_next_upstream 模块定义的错误
4. fail_timeout : 标示失败多少次以后 就不响应了
5. back_up: 备用机 , 如果 其他机子忙或者挂了可以访问backup机子
nginx 限流的策略有多种, 下面我们来聊聊常见的集中限流策略.
1. 针对固定IP进行限流, 这种策略主要用于同一个IP反复请求服务器,类似于洪水攻击或者DDos攻击,对单一ID进行限制可以有效的
对单一IP的限制的配置
vim nginx.conf 在http域内添加 limit_zone one $binary_remote_addr 30m; limit_req_zone $binary_remote_addr zone=req_one:30m rate=10r/s;
limit_zone 是对于每个 IP 分配session空间, 总共空间大小为30M one 定义了一个名称, $bin_remote_add 即为一个IP地址
limit_req_zone 是对请求频率进行限制, 10 req/second的IP允许访问
2. 针对IP限制并发请求
limit_conn perip 8; limit_req zone=perreq nodelay;这是设置IP并发 最多8个并发请求 同一个IP
3. 配置白名单
白名单的作用就是 对某些特定的IP不做请求限制,比如我们自己的IP,或者公司内网的IP等.
geo $whiteiplist { default 1; ---- key=default, value=1 include conf/whiteip.conf; } map $whiteiplist $limit { 1 $binary_remote_addr; --- value=1 则返回$binary_remote_addr 也就是IP 否则返回空字符串 0 ""; }
白名单放在 conf/whiteip.conf 文件里面.whitip.conf 的格式key value的格式, 就是特定的IP可以映射到空的字符串, 这样就不会对它进行限制操作了
配置白名单的 方法在官网有详细说明, 可以看这里.
GEO 用法 MAP用法
4. 负载均衡可能也算一种吧 , 当然他是把自己的流量倒到别的机子上去而已
nginx 的负载均衡 配置的字段是upstream
upstream lvs { server localhost:8088 ; server 192.168.1.123:8080 down; server abc.tmc weight=2; server server:9000 backup; }
然后在server 里面做一个代理, 执行lvs
server { listen 80; location / { proxy_pass http://lvs; } server_name my_proxy; }
稍微解释一下 upstream 的配置,
1. down 表示这台服务器不参与负载均衡
2. weight 默认为1 , weight 值越大, 分配的请求也越多
3. max_fails 允许请求的最多失败数目, 超过最大次数是, 返回proxy_next_upstream 模块定义的错误
4. fail_timeout : 标示失败多少次以后 就不响应了
5. back_up: 备用机 , 如果 其他机子忙或者挂了可以访问backup机子
相关文章推荐
- nginx代理指定目录
- 访问Nginx发生SSL connection error的一种情况
- Nginx+Naxsi部署专业级Web应用防火墙
- CentOS 6.2实战部署Nginx+MySQL+PHP
- nginx中http核心模块的配置指令2
- nginx中http核心模块的配置指令3
- nginx中http核心模块的配置指令4
- nginx中http的fastcgi模块的配置指令1
- Nginx 学习笔记(一)
- 网站502与504错误分析
- 用zabbix监控nginx_status状态
- 艰难完成 nginx + puma 部署 rails 4的详细记录
- 把Lua编译进nginx步骤方法
- web 应用中常用的各种 cache详解
- Linux系统上配置Nginx+Ruby on Rails+MySQL超攻略
- window+nginx+php环境配置 附配置搭配说明
- 解析CI即CodeIgniter框架在Nginx下的重写规则
- 将PHP从5.3.28升级到5.3.29时Nginx出现502错误
- 基于Nginx0.8.54+PHP5.3.4+MySQL5.5.8的全新LNMP稳定版架构搭建的VPS