Nginx限制对代理HTTP资源的访问
一、限制连接数
1、使用limit_conn_zone
指令定义密钥并设置共享内存区域的参数(工作进程将使用该区域共享密钥值的计数器)。作为第一个参数,指定评估为键的表达式。在第二个参数中zone,指定区域的名称及其大小:
limit_conn_zone $ binary_remote_addr zone = addr:10m ;
2、使用limit_conn
指令的适用范围内的限制,或上下文。将共享内存区域的名称指定为第一个参数,并将每个键的允许连接数指定为第二个参数:location {}server {}http {}
location /download/ {
limit_conn addr 1;
}
连接数受IP地址限制,因为该$binary_remote_addr变量用作键。
实战:
1、在发布目录中创建download目录,并写入数据
[root@localhost download]# ls
nginx.jpg
2、修改nginx.conf配置文件
方法1
http {
#...
limit_conn_zone $binary_remote_addr zone=addr:10m;
server {
#...
location /download/ {
limit_conn addr 1;
}
}
}
方法2
http {
limit_conn_zone $server_name zone=servers:10m;
server {
limit_conn servers 1000;
}
}
3、通过Apache Benchmark(ab) 压力测试工具进行测试
- 设置1个并发连接,10次请求(成功)
[root@localhost conf]# ab -c 1 -n 10 http://192.168.146.133/download