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. poj2778DNA Sequence(AC自动机+矩阵乘法)

    链接 看此题前先看一下matrix67大神写的关于十个矩阵的题目中的一个,如下: 经典题目8 给定一个有向图,问从A点恰好走k步(允许重复经过边)到达B点的方案数mod p的值    把给定的图转为邻 ...

  2. hdu3847Trash Removal(凸包)

    链接 这题居然是WF的题, 应属于签到题.. 求一个多边形是否能被一个宽为d的矩形框住. 可以求一下凸包,然后枚举每条凸包的边,找出距离最远的点. #include <iostream> ...

  3. android sdk 更新那些文件

    上篇经验,完成了android开发环境的搭建,相信大家也下载了那1.52G,已经下载好了的Adt_bundle. 那么,我们来点击SDK Manager.exe,看看有些什么吧 2 如图所示,为整个目 ...

  4. JQuery Datatables Dom 和 Language 参数详细说明

    http://linleizi.iteye.com/blog/2086435 *********************************** Data Tables: http://datat ...

  5. iOS开发 百度坐标点的计算

    BMKMapPoint point1 = BMKMapPointForCoordinate(_userGps); BMKMapPoint point2 = BMKMapPointForCoordina ...

  6. 运行js提示库没有注册错误8002801d的解决办法

    运行js提示库没有注册错误8002801d的解决办法这个错误主要是因为服务器上的windows scripts版本较低,请按下面的链接下载较高版本windows scripts 5.6并在服务器上进行 ...

  7. c c++怎么判断一个字符串中是否含有汉字

    c c++怎么判断一个字符串中是否含有汉字 (2013-02-05 10:44:23) 转载▼     #include  #include  int main() { char sztext[] = ...

  8. 004_kafka_安装运行

    1.下载和安装 目前kafka的稳定版本为0.10.0.0 下载地址:http://kafka.apache.org/downloads.html 下载后解压缩安装包到系统即可完成安装 > ta ...

  9. Ubuntu 安装桌面且远程连接

    前言:  一般服务器是不装桌面的,因为会牺牲很多性能,这里就选择很小桌面,牺牲一定性能  这里就采用x2go, 这里是在ubuntu server 14.04 安装成功,其实它是可用于linux所有  ...

  10. WIN7 java7 环境变量配置

    1 首先要搞清楚,java可能安装了两个部分,一个叫JDK,一个叫jre.其中jre若已经安装了,那么在安装JDK的时候,就不要放在默认的C:\Program File\java\XXX目录.最好另起 ...