侧边栏壁纸
博主头像
落叶人生博主等级

走进秋风,寻找秋天的落叶

  • 累计撰写 130562 篇文章
  • 累计创建 28 个标签
  • 累计收到 9 条评论
标签搜索

目 录CONTENT

文章目录

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

2023-11-10 星期五 / 0 评论 / 0 点赞 / 42 阅读 / 3895 字

为了防止服务器被恶意采集或ddos攻击给搞死, 所以给限个速。 这里主要使用Nginx的ngx_http_limit_req_module和ngx_http_limit_conn_module来控制访

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

 

广告 广告

评论区