php限制ip访问次数 并发_Nginx限制IP并发连接数及每秒处理请求数

为防止服务器被恶意采集或遭受DDoS攻击,可使用Nginx的ngx_http_limit_req_module和ngx_http_limit_conn_module控制访问量。在nginx.conf文件中加入相应配置,可对所有PHP页面请求进行限速,还能设置白名单,限制IP并发连接数和每秒请求数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

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

发布时间:2016-02-17 06:19:11编辑:阅读(4154)

为了防止服务器被恶意采集或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.yoururl.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;

}

}

}

评论

昵称:

内容:

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值