Nginx访问控制
文章目录
一、基于IP的访问控制
nginx基于IP的访问控制模块:http_access_module
配置语法如下:
Syntax: allow address | CIDR | unix: | all;
default:默认无
Context:http,server,location,limit_except
Syntax: deny address | CIDR | unix: | all;
default:默认无
Context:http,server,location,limit_except
环境:
准备工作
服务端:
安装并启动nginx,创建网站发布目录和网页测试内容
编写子配置文件
重新加载配置文件
客户端:
在不做访问控制的时候,两台客户端都能访问服务端
案例一:
服务端:
设置访问控制:先拒绝192.168.58.162客户端,再允许其他任何客户端。
客户端:
案例二:
服务端:
在案例一的基础上将allow all注释掉
客户端:
与案例一验证结果相同,说明在使用deny拒绝某些ip后,允许其他所有客户端访问的情况下,无论写还是不写allow all,效果都一样,即这种情况下allow all是默认的。
案例三:
服务端:
客户端:
deny all:都不允许访问
案例四:
服务端:
客户端:
两个客户端都能访问到,说明在先允许所有,在拒绝某个的情况下,拒绝失效
案例五:
服务端:
客户端:
案例六:
服务端:
客户端:
两个客户端都能访问到,说明在先允许所有,在拒绝某个的情况下,拒绝失效
总结
1.拒绝所有,允许某一个,允许不生效
2.允许所有,拒绝某一个,拒绝不生效
使用情况
先写被拒绝的人,ip 或者 网段 被添加到了黑名单,剩下的都允许 在白名单内
二、基于用户的信任登录
1、nginx基于用户的信任登录模块:http_auth_basic_module
2、配置语法
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:存储用户名密码信息的文件。
案例
准备工作:
用户的信任登录配置:
1、修改配置文件
2、安装httpd-tools工具
htpasswd 是开源 http 服务器 apache httpd 的一个命令工具,用于生成 http 基本认证的密码文件
3、添加信任用户
4、验证
局限性
(1)用户信息依赖文件方式
(2)操作管理机械,效率低下
解决方法
(1)Nginx结合LUA实现高效验证
(2)Nginx和LDAP打通,利用nginx-auth-ldap模块
(3)Nginx只做中间代理,具体认证交给应用。