8.Nginx访问限制
启动请求频率限制(ngx_http_limit_rep_module)
测试未限制情况下的访问
yum install -y httpd-tools
ab -n 100 -c 10 http:/a.com/ #发起100此请求分十次发送,向某个网站
启动限制
#定义 limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s; (限制请求 二进制地址 限制策略的名称 占用10M空间 允许每秒1次请求) #引用 limit_req zone=req_zone; (引用 限制策略的名称) #配置 #vim /etc/nginx/nginx.conf http{ limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s; } #vim /etc/nginx/conf.d/a.com server{ location / { limit_req zone=req_zone; } }
重启服务,并测试
ab -n 100 -c 10 http://a.com/ #这里可以看到有99个错误
观察错误日志
tail -f /var/log/nginx/error.log
启动连接频率限制(ngx_http_limit_conn_module)
目的:通过IP地址,限制连接(TCP)
启动连接频率限制
#vim /etc/nginx/nginx.conf http{ limit_req_zone $binary_remote_addr zone=req_zone:10m; } #vim /etc/nginx/con.d/a.com server{ location / { limit_conn conn_zone1; } } (单个IP,同时只允许有一个TCP连接)
测试
ab -n 100 -c 10 http://a.com/
效果不明显
了解不同的网站压力测试工具
9.Nginx访问控制
基于主机IP(ngx_http_access_module)
限制主机访问
vim /etc/nginx/conf.d/default.conf
server{
allow 192.168.172.134;
#allow 192.168.172.133; 写一个用另一个注释的去测试一下
deny all;
}测试:服务器无法访问
注意这里要把前面实验的限制给注释掉
server{
location / {#limit_req zone=req_zone;
}
}
基于用户(ngx_http_auth_basic_module)
建立认证文件
#yum install -y httpd-tools #htpasswd -cm /etc/nginx/conf.d/passwd user10 #会话密码 #htpasswd -m /etc/nginx/conf.d/passwd user20 #cat /etc/nginx/conf.d/passwd #观察口令文件是否生成
启动认证
#vim /etc/nginx/conf.d/a.com.conf server{ auth_basic "nginx access text!"; auth_basic_user_file /etc/nginx/conf.d/passwd;; }
重启服务器并验证,有错误的话去看一下日志