文章目录
Nginx 访问限制
ngx_http_limit_req_module
网站请求
测试未限制情况下的访问
yum install -y httpd-tools
ab -n 100 -c 10 http://192.168.75.222/
启动限制并查看
vim /etc/nginx/nginx.conf
http {
limit_req_zone $binary_remote_addr zone=req_zone:10m rate=1r/s;
限制请求 二进制地址 限制策略的名称 占用10M空间 允许每秒1次请求
# limit_req zone=req_zone;
#引用 限制策略的名称
server {
location / {
root /usr/share/nginx/html;
index index.html index.htm;
limit_req zone=req_zone; #引用
#limit_req zone=req_zone burst=5;
#limit_req zone=req_zone burst=5 nodelay;
#burst=5 表示最大延迟请求数量不大于5。
#如果太过多的请求被限制延迟是不需要的 ,这时需要使用nodelay参数,
#服务器会立刻返回503状态码。
}
}
}
ngx_http_limit_conn_module
TCP发起连接请求
启动连接频率限制
vim /etc/nginx/nginx.conf
http {
limit_conn_zone $binary_remote_addr zone=conn_zone:10m;
}
server {
location / {
...
limit_conn conn_zone 1;
}
}
结果相似
Nginx 访问控制
基于主机(ip) (ngx_http_access_module)
Directives
allow
允许某些主机
deny
拒绝某些主机
启用控制
1 限制主机访问
vim /etc/nginx/conf.d/default.conf
server {
allow 10.18.45.65;
allow 10.18.45.181;
deny all;
}
2 测试结果
除了授权的ip可以访问
其他服务器无法访问
基于用户(ngx_http_auth_basic_module)
启用控制
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
观察口令文件是否生成。已生成
user10:$apr1$UE/tLtDM$nVm686kAMYb/ArqQDUi8U/
user20:$apr1$bmn0E/gK$enkXKb2V5uFvUy9wdIHlP.
- 启动认证
vim /etc/nginx/conf.d/default.conf
server {
找到server{字段,在下一行插入认证字段。
auth_basic “nginx access test!”;
auth_basic_user_file /etc/nginx/conf.d/passwd;
提示消息
引用认证文件
…
}
3.重启并验证