nginx对于预防一些攻击也是很有效的,例如CC攻击,爬虫,本文将介绍限制这些攻击的方法,可以使用nginx的ngx_http_limit_conn_module、ngx_http_limit_req_module这两个模块达到目的,该模块为nginx内置模块,yum安装即有(001.1文档),无需编译安装。本文就介绍nginx这两个模块的使用和细节,希望能够对需要的小伙伴有所帮助。
这里是使用limit_req_zone模块进行频率限制
红色字体是限制访问频率的配置(完整配置见案例文件)
#user nobody;
worker_processes 1;
worker_rlimit_nofile 1024;
events {
use epoll;
worker_connections 1024;
}
http {
include mime.types;
default_type application/octet-stream;
##配置访问频率限制,访问频率超出预设值则返回503,50m是记录访问次数的session大小
limit_conn_log_level error;
limit_conn_status 503;
limit_conn_zone $binary_remote_addr zone=one:50m;
limit_conn_zone $server_name zone=perserver:50m;
##单个IP每秒最多5次访问,压力测试会稳定在5.0QPS(刚开始可能会有波动)
limit_req_zone $binary_remote_addr zone=allips:50m rate=5r/s;
upstream tomcat {
server 192.168.92.40:8080;
keepalive 32;
}
server {
listen 80;
#引用单个IP每秒最多5次访问,超出的丢入缓冲区burst。
#缓冲区burst里的请求数不超过10000,就不会返回503,会以每秒5个的速度执行。
limit_req zone=allips burst=10000;
##管理后台禁止访问
location ^~ /admin/ {
deny all;
}
location / {
proxy_pass http://tomcat/;
}
}
}