Nginx作为高性能的反向代理服务器,常用于后台web服务,接口服务等等的入口。nginx本身提供了相关的安全限制功能,这里主要来讲一下通过nginx限制访问速率,连接数(并发数),带宽速度等,以防止恶意DDOS,恶意爬虫等攻击导致服务崩溃。
原文详情请看我的个人博客:
右键在新标签页中打开链接即可。
-------------------------------------------------------------- 分隔符 -------------------------------------------------------------
前言
Nginx作为高性能的反向代理服务器,常用于后台web服务,接口服务等等的入口。nginx本身提供了相关的安全限制功能,这里主要来讲一下通过nginx限制访问速率,连接数(并发数),带宽速度等,以防止恶意DDOS,恶意爬虫等攻击导致服务崩溃,还可以通过第三方模块实现对超出限制对IP进行封IP处理。
正文
1. 环境
centos7,nginx-1.12.2,yum安装的nginx。要实现限制,需要使用到nginx的ngx_http_limit_conn_module,ngx_http_limit_req_module模块。
如果是源码安装nginx,这些模快都是nginx安装时自动安装的,不需要额外指定添加模块,直接编译安装即可。
nginx的安装,请参看《centos7 nginx 安装与配置实现负载均衡》
2. 限制连接数
参数说明
limit_conn_zone:在http{}层中配置,定义密钥并设置共享内存区域的参数(工作进程将使用此区域来共享密钥值的计数器)。作为第一个参数,指定作为键计算的表达式。在第二个参数中zone
,指定区域的名称及其大小,如下,订一个名为myname的zone,大小10m:
limit_conn_zone $binary_remote_addr zone=myname:10m;
其中 $binary_remote_addr 就是用来作为密钥的字段,是$remote_addr的更小的二进制形式。就是客户端IP的二进制,这个参数非常重要,决定着根据什么来限制连接数,最常用的就是$binary_remote_addr,除此之外,还可以使用$server_name。
limit_conn&#x