文档章节

Nginx 限制IP并发连接数及每秒处理请求数

qimh
 qimh
发布于 2017/05/22 11:16
字数 437
阅读 47
收藏 0

为了防止服务器被恶意采集或ddos攻击给搞死, 所以给限个速。

这里主要使用Nginx的ngx_http_limit_req_module和ngx_http_limit_conn_module来控制访问量.

这两个模块在Nginx中已内置, 在nginx.conf文件中加入相应的配置即可使用。

如下所示(附带白名单功能),对所有的PHP页面的请求进行限速:

 

 

http {
     #geot和map两段用于处理限速白名单,map段映射名单到$limit,处于geo内的IP将被映射为空值,否则为其IP地址。
     #limit_conn_zone和limit_req_zone指令对于键为空值的将会被忽略,从而实现对于列出来的IP不做限制
     geo $whiteiplist  {
        default 1;
        127.0.0.1 0;
        121.199.16.249 0;
     }
     map $whiteiplist  $limit {
        1 $binary_remote_addr;
        0 "";
     }
     
     #limit_conn_zone定义每个IP的并发连接数量
     #设置一个缓存区保存不同key的状态,大小10m。使用$limit来作为key,以此限制每个源IP的链接数
     limit_conn_zone $limit  zone=perip:10m;
     
     
     #limit_req_zone定义每个IP的每秒请求数量
     #设置一个缓存区reqps保存不同key的状态,大小10m。这里的状态是指当前的过量请求数。
     #$limit为空值则不限速,否则对应的IP进行限制每秒5个连接请求。
     limit_req_zone  $limit  zone=reqps:10m rate=5r/s;

      
 
     server {
        listen     80;
        server_name   www.domain.com;
 
        #只对PHP页面的请求进行限速
        location ~ [^/]\.php(/|$)
        {
            #对应limit_conn_zone块
            #限制每IP的PHP页面请求并发数量为5个
            limit_conn perip 5; 
           
            #对应limit_req_zone块
            #限制每IP的每秒的PHP页面请求次数为上面定义的rate的值:每秒5个请求,不延迟      
            limit_req zone=reqps nodelay;
        }
     }
}

参考链接:http://blog.csdn.net/chclvzxx/article/details/52851365

 

 

 

 

 

ngx_http_limit_req_module 解释:https://www.ttlsa.com/nginx/nginx-limiting-the-number-of-requests-ngx_http_limit_req_module-module/

 

© 著作权归作者所有

qimh
粉丝 11
博文 459
码字总数 81996
作品 0
滁州
程序员
私信 提问
nginx防止部分DDOS攻击

策略: 1)利用ngxhttplimitreqmodule模块限制请求的速率和请求连接数 配置参照:http://nginx.org/en/docs/http/ngxhttplimitreqmodule.html#limitreqzone 2)利用ngxhttplimitconnmodule模...

阿宇_
2015/09/20
158
0
【充电】《Nginx核心知识100讲》 preaccess阶段:连接限制limit_conn模块、请求限制limit_req模块

极客专栏《Nginx核心知识100讲》55-56小节的笔记 55 | preaccess阶段:对连接做限制的limit_conn模块 在preaccess阶段限制用户并发连接数的limitconn模块。上一节讲到匹配location,匹配到之...

言十年
01/06
0
0
nginx限制客户端请求数+iptables限制TCP连接和频率来防止DDOS

DDOS的特点是分布式,针对带宽和服务×××,即四层流量×××和七层应用×××。对于七层的应用×××,如果前端是Nginx,主要使用nginx的httplimitconn和httplimitreq模块来防御,通过限制...

justin_peng
2018/08/03
0
0
高并发系统限流设计

欢迎访问我的博客查看原文:http://wangnan.tech 概述 高并发系统时有三把利器用来保护系统:缓存、降级和限流,缓存的目的是提升系统访问速度和增大系统能处理的容量,降级是当服务出问题或...

wanna
2017/10/25
0
0
nginx 的限制连接模块limit_zone与limit_req_zone

nginx 上有两个限制连接的模块一个是 limitzone 另一个是 limiereqzone,两个都可以限制连接,但具体有什么不同呢? 下面是 nginx 官网上给的解释 limitreqzone Limit frequency of connecti...

pesen
2014/09/26
0
0

没有更多内容

加载失败,请刷新页面

加载更多

Spring使用ThreadPoolTaskExecutor自定义线程池及实现异步调用

多线程一直是工作或面试过程中的高频知识点,今天给大家分享一下使用 ThreadPoolTaskExecutor 来自定义线程池和实现异步调用多线程。 一、ThreadPoolTaskExecutor 本文采用 Executors 的工厂...

CREATE_17
今天
5
0
CSS盒子模型

CSS盒子模型 组成: content --> padding --> border --> margin 像现实生活中的快递: 物品 --> 填充物 --> 包装盒 --> 盒子与盒子之间的间距 content :width、height组成的 内容区域 padd......

studywin
今天
7
0
修复Win10下开始菜单、设置等系统软件无法打开的问题

因为各种各样的原因导致系统文件丢失、损坏、被修改,而造成win10的开始菜单、设置等系统软件无法打开的情况,可以尝试如下方法解决 此方法只在部分情况下有效,但值得一试 用Windows键+R打开...

locbytes
昨天
8
0
jquery 添加和删除节点

本文转载于:专业的前端网站➺jquery 添加和删除节点 // 增加一个三和一节点function addPanel() { // var newPanel = $('.my-panel').clone(true) var newPanel = $(".triple-panel-con......

前端老手
昨天
8
0
一、Django基础

一、web框架分类和wsgiref模块使用介绍 web框架的本质 socket服务端 与 浏览器的通信 socket服务端功能划分: 负责与浏览器收发消息(socket通信) --> wsgiref/uWsgi/gunicorn... 根据用户访问...

ZeroBit
昨天
10
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部