Nginx流量控制详解
1、Nginx访问控制模块类型
(1)基于IP访问控制:http_access_module
(2)基于用户的新人登录:http_auth_basic_module
2、基于IP模块
配置语法:
Syntax:allow address | CIDR | unix: | all;
default:默认无
Context:http,server,location
Syntax:deny address | CIDR | unix: | all;
default:默认无
Context:http,server,location
配置设置:
#vim /etc/nginx/conf.d/access_mod.conf //修改配置文件
server {
listen 80;
server_name localhost;
location ~ ^/admin {
root /home/www/html;
index index.html index.hml;
deny 192.168.239.128; //拒绝192.168.239.128访问
allow all;
}
}
#如果先允许访问,在定义拒绝访问,那么拒绝访问不生效。
3、location拒绝所有请求
server {
listen 80;
server_name localhost;
location /foo.html {
root /home/www/html;
deny all;
}
}
4、用户的信任登录
Syntax:auth_basic string | off;
default:auth_basic off;
Context:http,server,location,limit_except
Syntax:auth_basic_user_file file;
default:默认无
Context:http,server,location,limit_except
file:存储用户名密码信息的文件。
配置实例
#mv access_mod.conf auth_mod.conf //修改配置文件
server {
listen 80;
server_name localhost;
location ~ ^/admin {
root /home/www/html;
index index.html index.hml;
auth_basic "Auth access test!";
auth_basic_user_file /etc/nginx/auth_conf;
}
}
#auth_basic不为off,开启登录验证功能,auth_basic_user-file加载账号密码文件
建立口令文件
# mkdir /home/www/html/admin -p
# vim /home/www/html/admin/index.html
hello boy
# yum -y install httpd-tools //htpasswd使开源http服务器apache httpd的一个命令工具,用于生成http基本认证的密码文件
# htpasswd -cm /etc/nginx/auth_conf user1 //第一次创建用户
# htpasswd -m /etc/nginx/auth_conf user2 //第二次创建用户
# cat /etc/nginx/auth_conf //查看创建的用户的密码
user1:$apr1$MOa9UVqF$RlYRMk7eprViEpNtDV0n40
user2:$apr1$biHJhW03$xboNUJgHME6yDd17gkQNb0
5、访问测试
测试失败
[外链图片转存失败,源站可能有防盗链机制,建议将图片保存下来直接上传(img-IXSmsVyd-1620391862671)(file://D:\学习文件\Nginx Web服务器\assets\1561996355328.png?lastModify=1620391576)]
6、局限性
用户信息依赖文件方式
操作管理机械,效率低