Nginx 防CC详细设置步骤发布时间:2020/12/28 15:51:38 阅读次数:

  

CC攻击是如今互联网下比较流行的网络攻击,不同于DDoS靠流量蛮力攻击,CC攻击是模拟正常用户与服务器交互。CC攻击一般需找到网站/应用的薄弱处,然后通过大量连接/请求消耗服务器资源,让CPU、带宽能资源占用飙升。

t019fdd0450a3e13b5f.jpg

那么,Nginx 防CC攻击有什么步骤吗?一起看看吧:


1、编辑Nginx配置文件,例如 /etc/nginx/nginx.conf , 在 http 段分配计数内存:


Bash

limit_conn_zone $binary_remote_addr zone=limit_conn:10m;

limit_req_zone $binary_remote_addr zone=limit_req:10m rate=10r/s;

 

上述配置分配了 limit_conn 和 limit_req 两个10M大小的内存块(1M内存可记录16000个会话),并设置每秒最大请求速率是10次。


2、打开网站配置文件,例如 /etc/nginx/conf.d/qiquanji.conf,在 server 或者 location 段中开启限制:


Bash

server {

    limit_conn limit_conn 5; # 并发连接数不超过5

    limit_req zone=limit_req burst=10 nodelay;

    # 其他设置

 

http中设置每秒允许10个请求,即100毫秒一个,如果突然来10个连接,后面9个直接返回503错误,这是我们不愿意看到的。limit_req中的 burst 参数用来处理突发请求,此时10个请求都会被接受以应对突发流量。如果再来10个,那就超出了允许的突发限制,Nginx直接返回503错误。


nodelay 表示在允许突发请求的情况下,直接处理所有请求,而不是每100毫秒处理一个。


实践中请根据具体情况设置并发连接数和请求速率。数值过大会影响防御效果,太小则会影响正常用户使用。此外,建议总是启用 burst 和 nodelay 以应对突发流量。


3、保存配置文件,nginx -t 检查有无语法错误,然后 systemctl reload nginx 重新加载配置。