nginx限制请求数和连接数来防御cc攻击

简介:

主要通过nginx的http_limit_conn和http_limit_req模块来防御cc攻击。

ngx_http_limit_req_module可以限制单个IP每秒请求数

ngx_http_limit_conn_module可以限制单个IP的连接数

通过限制请求数和连接数能相对有效的防御CC攻击。

1、限制每秒请求数

ngx_http_limit_req_module模块指令通过漏桶原理来限制单位时间内的请求数,一旦单位时间内请求数超过限制,就会返回503错误,需要分别在http和server中配置。

例:

http {
limit_req_zone $binary_remote_addr zone=one:10m rate=5r/s;
...
server {
    ...
    location  / {
        limit_req zone=one burst=2 nodelay;
           }
       }
 }


说明:

$binary_remote_addr:表示客户端IP地址
zone=one:10m:漏桶名字为one,并为这个zone分配10M内存用来存储会话(二进制远程地址),1M的内存可以保存约16000个64字节的记录(可以参考官方文档:http://nginx.org/en/docs/http/ngx_http_limit_req_module.html
rate=5r/s:限制频率每秒5个请求
burst=2:允许超过频率限制请求,但是最多不能超过2个,举例一:第一秒请求1个,第二秒也请求1个,那么第三秒是可以请求5个的。举例二:第一秒请求4个,第二秒超过2个请求直接503。
nodelay:超过的请求不延迟处理,设置后4个请求在一秒内处理。

2、限制IP连接数

ngx_http_limit_conn_modul模块和上面的有些相似,使用起来更简单。

例:

http {
limit_conn_zone $binary_remote_addr zone=addr:10m;
...
server {
    ...
    location / {
        limit_conn addr 5;
            }
       }
 }


说明:limit_conn addr 5;限制同一时间内只允许5个连接,超出的返回503
目录
相关文章
|
3月前
|
应用服务中间件 nginx
百度搜索:蓝易云【HTTP请求是如何关联Nginx server{}块的?】
总结来说,Nginx中的 `server{}`块用于关联HTTP请求和虚拟主机,通过配置不同的 `server{}`块,可以实现多个域名或IP地址的请求分发和处理。这样,Nginx可以根据不同的请求来提供不同的服务和内容。
37 0
|
15天前
|
存储 安全 应用服务中间件
解密Nginx限流机制:有效应对DDoS攻击与高并发流量
解密Nginx限流机制:有效应对DDoS攻击与高并发流量
29 0
|
6月前
|
应用服务中间件 nginx
百度搜索:蓝易云 ,Nginx设置禁用 OPTIONS 请求以及允许跨域教程!
通过按照上述步骤,在Nginx中设置禁用OPTIONS请求和允许跨域。请确保在编辑Nginx配置文件时使用正确的服务器名称或IP地址。
62 0
|
6月前
|
域名解析 负载均衡 应用服务中间件
nginx反向代理https域名时,请求报错502问题排查
nginx反向代理https域名时,请求报错502问题排查
|
3月前
|
监控 安全 前端开发
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
Nginx 访问日志中有 Get 别的网站的请求是什么原因?
36 0
|
7月前
|
应用服务中间件 nginx
nginx输入请求的header和body到日志
nginx输入请求的header和body到日志
316 1
|
8月前
|
应用服务中间件 nginx
nginx反向代理POST请求
nginx反向代理POST请求
397 1
|
3月前
|
网络协议 关系型数据库 MySQL
【nginx】使用nginx转发tcp请求
【nginx】使用nginx转发tcp请求
108 1
|
4月前
|
JSON 应用服务中间件 nginx
在Nginx日志中记录请求的header和请求body
在Nginx日志中记录请求的header和请求body
158 0
|
6月前
|
移动开发 应用服务中间件 nginx
统计请求nginx最多次数的IP地址
统计请求nginx最多次数的IP地址