- 1、基于地址访问控制
- 1)安装模块
- 2)命令
- 3)实验演示
- ①要求
- ②实验环境
- ③修改配置文件
- ④重启nginx
- ⑤客户端测试
- 2、基于用户访问控制
- 1)安装模块
- 2)命令
- 3)实验演示
- ①要求
- ②实验环境
- ③修改配置文件
- ④创建账号密码
- ⑤重启nginx
- ⑥客户端测试(浏览器测试)
2)命令所需模块默认已经内置,无需再次安装
allow: 语法: allow address | CIDR | unix: | all; 默认值: — 配置段: http, server, location, limit_except
allow解释:允许某个IP或者IP网段访问
deny: 语法: deny address | CIDR | unix: | all; 默认值: — 配置段: http, server, location, limit_except
3)实验演示 ①要求deny解释:禁止某个IP或者IP网段访问
限制主机192.168.25.136访问web1.test.com,其余同网段192.168.25.0/24其它主机均可访问web1.test.com,拒绝其它所有主机访问web1.test.com。
②实验环境③修改配置文件服务端:192.168.25.137 web1.test.com
客户端:192.168.25.136 & 192.168.25.138
server {
listen 80;
server_name web1.test.com;
location / {
autoindex on;
root /usr/share/nginx/html/web1;
index index.html index.htm;
deny 192.168.25.136;
allow 192.168.25.0/24;
deny all;
}
}
④重启nginx注意:从上到下的顺序,类似iptables & ACL,一旦匹配立即跳出
[root@www ~]# systemctl restart nginx⑤客户端测试
[root@136 ~]# curl web1.test.com403 Forbidden 403 Forbidden
nginx/1.20.1
[root@138 ~]# curl web1.test.com this is web1 test page2、基于用户访问控制 1)安装模块
对于实现访问网站或目录密码认证保护,nginx的HTTP基本认证模块(HTTP Auth Basic)可以实现。这个模块提供基于用户名与密码的验证保护站点或站点的一部分。
2)命令HTTP基本认证模块默认已经内置,无需再次安装
auth_basic: 语法: auth_basic string | off; 默认值: —
auth_basic解释:指令包含一个具有测试用户名和密码的HTTP基本认证,指定的参数将用于认证域。如果将该值设置为“off”则忽略下级指令继承的动作。
auth_basic_user_file: 语法: auth_basic_user_file file; 默认值: —
3)实验演示 ①要求auth_basic_user_file解释:指令为验证域指定了密码文件的路径,0.6.7版本以后这里指定的文件是nginx.conf所在目录的相对路径,而不是prefix指定的路径。上方指定的 string(自定义字符串) 所代表单词将会出现在第一次访问Nginx站点的弹出框内。
注意:最后的路径避免麻烦可以直接用绝对路径,如果需要使用相对路径,需要写在当前配置文件所在路径的基础上。
所有主机访问web1.test.com均需要进行身份验证(输入账号 & 密码)。
②实验环境③修改配置文件服务端:192.168.25.137 web1.test.com
客户端:192.168.25.136 & 192.168.25.138
server {
listen 80;
server_name web1.test.com;
location / {
autoindex on;
root /usr/share/nginx/html/web1;
index index.html index.htm;
auth_basic "Restricted";
auth_basic_user_file /usr/share/nginx/webuserpass;
}
}
④创建账号密码
[root@www ~]# htpasswd -c /usr/share/nginx/webuserpass tom //tom用户(无需事先创建) New password: //密码:redhat Re-type new password: //确认密码:redhat Adding password for user tom⑤重启nginx
[root@www ~]# systemctl restart nginx⑥客户端测试(浏览器测试)
[root@136 ~]# elinks web1.test.com [root@138 ~]# elinks web1.test.com
192.168.25.136
192.168.25.138



