一、基于主机(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/