nginx 可以使用ngx_http_limit_req对服务器资源请求进行限制,这对使用ab等工具恶意压测服务器和cc(challenge Collapsar)会有一定的防范作用。防止用户恶意攻击刷爆服务器。
ngx_http_limit_req_module模块是nginx默认安装的,所以直接配置即可。
该模块使用漏斗算法(Leaky Bucket),该算法有两种处理方式Traffic Shaping和Traffic Policing
在桶满水之后,常见的两种处理方式为:
1.暂时拦截住上方水的向下流动,等待桶中的一部分水漏走后,再放行上方水。
2.溢出的上方水直接抛弃。
将水看作网络通信中数据包的抽象,则方式1起到的效果称为Traffic Shaping,方式2起到的效果称为Traffic Policing
由此可见,Traffic Shaping的核心理念是"等待",Traffic Policing的核心理念是"丢弃"。它们是两种常见的流速控制方法
nginx中该模块的使用配置示例
limit_req_zone $binary_remote_addr zone=one:10m rate=