十、Nginx访问控制
原创
©著作权归作者所有:来自51CTO博客作者哭泣的馒头的原创作品,请联系作者获取转载授权,否则将追究法律责任
一、基于主机(IP)
ngx_http_access_module
允许限制对某些客户端地址的访问。
1、allow/deny
Syntax: allow address | CIDR | unix: | all;
Context: http, server, location, limit_except
2、配置
location / {
deny 192.168.1.1;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
allow 2001:0db8::/32;
deny all;
}
二、基于用户(username&&password)
1、安装httpd-tools
1、安装
yum install -y httpd-tools
2、常用参数
-c 创建passwdfile.如果passwdfile 已经存在,那么它会重新写入并删去原有内容.
-n 不更新passwordfile,直接显示密码
-m 使用MD5加密(默认)
-d 使用CRYPT加密(默认)
-p 使用普通文本格式的密码
-s 使用SHA加密
-b 命令行中一并输入用户名和密码而不是根据提示输入密码,可以看见明文,不需要交互
-D 删除指定的用户
3、创建账号密码文件
htpasswd -cm /app/nginx/passd zhangsan ##首次创建需要加入-c参数,但是第二次添加账号密码不要再添加-c,不然就覆盖了第一行账号
htpasswd -m /app/nginx/passd lisi
htpasswd -m /app/nginx/passd wangwu
2、配置模块
ngx_http_auth_basic_module
允许通过使用“HTTP 基本身份验证”协议验证用户名和密码来限制对资源的访问。
1、auth_basic
Syntax: auth_basic string | off;
Context: http, server, location, limit_except
#这个参数控制着是否开启身份验证,设置为off或者不设置此参数,身份验证都不会执行
2、auth_basic_user_file
Syntax: auth_basic_user_file file;
Context: http, server, location, limit_except
3、配置
server {
auth_basic "this is test";
auth_basic_user_file /app/nginx/passd;
}
systemctl restart nginx
5、测试
网页直接访问
如果使用curl
curl -u zhangsan:123456 http://192.168.10.133/
如果使用wget下载
wget --http-user=zhangsan --http-passwd=123456 http://192.168.10.133/