九、NGINX访问限制

1.ngx_http_limit_req_module

(1): 启用请求频率限制:
①:测试未限制情况下的访问:
yum install -y httpd-tools //下载压测工具
ab -n 100 -c 10 http://127.0.0.1/ //用压测工具向自己发送100次请求,分10次发送
②:NGINX入门篇——四(访问限制)_第1张图片
③:启动限制:
1.vim /etc/nginx/nginx.conf
2.limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s; //定义
NGINX入门篇——四(访问限制)_第2张图片
3.引用: vim /etc/nginx/conf.d/default.conf
limit_req zone=req_zone;
NGINX入门篇——四(访问限制)_第3张图片
4.systemctl restart nginx //重启服务
5.测试: ab -n 100 -c 10 http://127.0.0.1/
NGINX入门篇——四(访问限制)_第4张图片
6.观察错误日志: tail -10 /var/log/nginx/error.log
NGINX入门篇——四(访问限制)_第5张图片


2.ngx_http_limit_conn_module

1.目的:通过IP地址,限制链接(TCP)。但是实验环境无法测试
2.启动连接频率限制
(1):vim /etc/nginx/nginx.conf
(2):
http {
limit_conn_zone $binary_remote_addr zone=conn_zone:10m;
}
server {
location / {
...
limit_conn conn_zone 1;
}
}
NGINX入门篇——四(访问限制)_第6张图片
单个IP,同时只允许有一个tcp连接
(3):yum install -y httpd-tools
(4) ab -n 100 -c 10 http://服务器IP地址/
This is ApacheBench, Version 2.3 <$Revision: 1430300 $>
Benchmarking localhost (be patient).....done

Server Software: nginx/1.12.1
Server Hostname: tianyun.me
Server Port: 80

Document Path: /
Document Length: 671 bytes 文档长度

Concurrency Level: 10 当前并发数
Time taken for tests: 0.006 seconds 消耗总时间
Complete requests: 100 完成请求数
Failed requests: 0 失败请求数
Write errors: 0
Total transferred: 90400 bytes 总的传输大小
HTML transferred: 67100 bytes http传输大小
Requests per second: 15873.02 [#/sec] (mean) 每秒钟处理多少个请求。
(3): TCP的三次握手连接太小了,效果不明显