一:nginx访问限制
启动请求频率限制
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;
限制请求 二进制地址 限制策略的名称占用10M空间 允许每秒1次请求
vim /etc/nginx/nginx.conf http { limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s; 定义 server { location / { root /usr/share/nginx/html; index index.html index.htm; limit_req zone=req_zone; #引用限制 #limit_req zone=req_zone burst=5; #引用闲置,但是有5个令牌桶,有延迟,速度慢 #limit_req zone=req_zone burst=5 nodelay; #引用闲置,但是有5个令牌桶,无延迟,速度块 } } }
重启服务并测试,这时候你会发现,如果你在一秒内做多次操作那就会弹出错误。
二:Nginx 访问控制
1.基于主机(ip)做的访问控制
参数:allow 允许某些主机 deny 拒绝某些主机
启用控制,限制某些主机访问
vim /etc/nginx/conf.d/default.conf server { allow 192.168.133.162; #允许该主机访问 deny all; #其他所有主机均拒绝去访问 }
这时候你就会发现除了允许访问的主机外,其他的都不能访问。
基于用户做访问控制
1. 建立认证文件
yum install -y httpd-tools #生成秘钥的工具是由apache提供 htpasswd -cm /etc/nginx/conf.d/passwd user10 #会话密码 htpasswd -m /etc/nginx/conf.d/passwd user20 #会话密码 cat /etc/nginx/conf.d/passwd #观察口令文件是否生成。已生成
2. 启动认证
server { #找到server{字段,在下一行插入认证字段。 auth_basic "nginx access test!"; #提示消息 auth_basic_user_file /etc/nginx/conf.d/passwd; #引用认证文件 }
3.重启并验证