http块

limit_conn_zone $binary_remote_addr zone=connperip:10m;
limit_conn_zone $server_name zone=connperserver:10m; limit_req_zone $binary_remote_addr zone=reqperip:10m;
limit_req_zone $server_name zone=reqperserver:10m;
limit_req_zone $http_x_forwarded_for zone=qps2:10m rate=2r/s;
limit_req_zone $http_x_forwarded_for zone=qps3:10m rate=3r/s;
limit_req_zone $binary_remote_addr $request_uri zone=thre:3m rate=1r/s; #支持多个变量,比如限制同一 IP 访问同一 Url 的频率

  要限制连接,必须先有一个容器对连接进行计数,在http段加入如下代码:"zone=" 给它一个名字,可以随便叫,这个名字要跟后面的 limit_conn 一致,$binary_remote_addr, 用二进制来储存客户端的地址,1m 可以储存 32000 个并发会话,也可以用其他 Nginx 变量。

  限制请求数同限制连结束,但是后面 rate=2r/s,即漏桶原理,表示每秒只处理 2 个连接。定义一个漏桶,滴落速率 2 req/sec,桶空间10m,10M能保持大约160000个(IP)状态。

server块

limit_conn perip ; #每个IP最大连接数为8
limit_req zone=qps2 burst= nodelay; #速率qps=,峰值burst=,不延迟请求,直接处理请求或者返回503
limit_req zone=qps2 burst=; #速率qps=,峰值burst=,延迟请求,严格按照漏桶速率qps=1处理每秒请求,在峰值burst=5以内的并发请求,会被挂起,延迟处理,超出请求数限制则直接返回503,客户端只要控制并发在峰值[burst]内,就不会触limit_req_error_log
limit_rate 100k; #是对每个连接限速100k。这里是对连接限速,而不是对IP限速!如果一个IP允许两个并发连接,那么这个IP就是限速limit_rate * 2

白名单

  文件: nginx/conf/limit/whiteip.conf

127.0.0.1 ;        #白名单: 127.0.0.1
172.16.0.0/ ; #白名单 172.16.0.0 ~ 172.16.255.255
192.168.0.0/ ; #白名单 192.168.0.0 ~ 192.168.0.255

  文件 nginx/conf/limit/limit_zone.conf

#geo [$address] $variable 
#$address变量默认 $remote_addr,如果 $address 的值不能代表一个合法的IP地址,那么nginx将使用地址“255.255.255.255”。
geo $whiteiplist {
default ;
include limit/whiteip.conf;
} map $whiteiplist $limit {
$binary_remote_addr;
"";
} limit_req_zone $limit zone=perreq:10m rate=8r/s; #除了白名单外的IP每秒最多处理 个请求
limit_conn_zone $limit zone=perip:10m; #limit_conn_zone和limit_req_zone指令对于键为空值的将会被忽略,从而实现对于列出来的IP不做限制

spider 限制参考

limit_req_zone  $anti_spider  zone=one:10m   rate=10r/s;
if ($http_user_agent ~* "googlebot|bingbot|Feedfetcher-Google") {
set $anti_spider $http_user_agent;
}

Nginx-限制汇总的更多相关文章

  1. nginx错误汇总

    一.Nginx出现413 Request Entity Too Large错误解决方法 Nginx出现的413 Request Entity Too Large错误,这个错误一般在上传文件的时候出现, ...

  2. nginx资料汇总

    nginx docker 中的一些目录和 windows下是不同的, 静态内容目录: /usr/share/nginx/html 配置文件目录: /etc/nginx 日志输出目录: /var/log ...

  3. Nginx 错误汇总

    1. Upstream timed out (110: Connection timed out) while reading response header from upstream 这种情况主要 ...

  4. Web前端必备-Nginx知识汇总

    一.Nginx简介 Nginx是一个高性能.轻量级的Web和反向代理服务器, 其特点是占有内存及资源少.抗并发能力强. Nginx安装简单.配置简洁.启动快速便捷.支持热部署.支持 SSL.拥有高度模 ...

  5. apache&nginx资料汇总

    http://liudaoru.iteye.com/blog/336338 aquid:http://os.51cto.com/art/201009/225813.htm 数据库各种讲座:http:/ ...

  6. Ubuntu18.04下配置Nginx+RTMP服务器,实现点播/直播/录制功能

    2019.3.22更新 最新的nginx-1.15.9可与openssl1.1.1兼容了 以下原文: 这个东西我眼馋挺久了,最近终于试玩了一下,感觉很好玩,在搭建的过程在也遇到一些坑,这里总结一下 安 ...

  7. Nginx关联php安装及启动

    Nginx 1.10.2 php 5.6.30 [root@nginx local]# cat /etc/redhat-release CentOS Linux release 7.5.1804 (C ...

  8. 基于LNMP的Zabbbix之Zabbix Server源码详细安装,但不给图

    Zabbix Server安装 看到那里有错或者有什么问题的话,求指点 邮箱:losbyday@163.com 上一篇PHP源码安装参见基于LNMP的Zabbbix之PHP源码安装:https://i ...

  9. nginx几个知识点汇总

    WHY? 为什么用Nginx而不用LVS? 7点理由足以说明一切:1 .高并发连接: 官方测试能够支撑 5 万并发连接,在实际生产环境中跑到 2 - 3 万并发连接数.?2 .内存消耗少: 在 3 万 ...

  10. nginx 场景业务汇总 (中)

    本文链接:http://www.cnblogs.com/zhenghongxin/p/8906225.html,如果可以,请阅读上篇 <nginx场景业务汇总(初)> (十三)负载均衡 轮 ...

随机推荐

  1. 程序设计入门——C语言 第5周编程练习 1高精度小数(10分)

    1 高精度小数(10分) 题目内容: 由于计算机内部表达方式的限制,浮点运算都有精度问题,为了得到高精度的计算结果,就需要自己设计实现方法. (0,1)之间的任何浮点数都可以表达为两个正整数的商,为了 ...

  2. TCP短连接TIME_WAIT问题解决方法大全

    tcp连接是网络编程中最基础的概念,基于不同的使用场景,我们一般区分为“长连接”和“短连接”,长短连接的优点和缺点这里就不详细展开了,有心的同学直接去google查询,本文主要关注如何解决tcp短连接 ...

  3. Action<>和Func<> 委托【代理】

    C#中的Action<>和Func<> 其实他们两个都是委托[代理]的简写形式. 一.[action<>]指定那些只有输入参数,没有返回值的委托 Delegate的 ...

  4. Android API 21 Toolbar Padding

    up vote117down votefavorite 44 How do I get rid of the extra padding in the new Toolbar with Android ...

  5. Web前端入门了解

    Web就是指万维网,网站,Web开发的方向包括Web前端,Web后台. Web前端又分为  静态Web 和 动态Web, 静态Web就是用HTML实现的. 动态Web的实现方式有多种. 动态Web的实 ...

  6. Git基础操作

    配置秘钥 1.检查本机有没有秘钥 检查~/.ssh看看是否有名为d_rsa.pub和id_dsa.pub的2个文件. $ ~/.sshbash: /c/Users/lenovo/.ssh: Is a ...

  7. 转linq中的Single()、First()、Take(1) LINQ 标准的查询操作符 排序 orderby、thenby、Take

    Single():操作一个集合,同时强要求只有一个对象匹配,并返回这一个. First():操作一个集合,可以有多个对象匹配,但是只返回第一个. Take(1):操作一个集合,可以有对个对象匹配,单只 ...

  8. cellular neural networks(CNN)原理以及应用

    一.CNN的原理 1.CNN的思想: (1)借鉴了hopfield神经网络和CA a.hopfield的非线性动力学(主要是用于优化问题,比如旅行商问题等NP问题),Hopfield的能量函数的概念, ...

  9. freemarker if elseif

    FreeMarker模板 if, else, elseif 指令 : if, else, elseif 语法 <#if condition> ... <#elseif conditi ...

  10. Android学习(未完)

    Android四大组件1.Activity活动活动Activity是一种可以包含用户界面的组件,主要用于和用户进行交互活动之间使用intent进行通信,激活组件,分为1.显式intent2.隐式int ...