Nginx模块——访问控制

环境:
CentOS7
Nginx 1.16.0


Nginx的访问控制实现中存在如下两种方式:
基于IP的访问控制 : http_access_module
基于用户的信任登录 : http_auth_basic_module


1. http_access_module
配置语法:

Syntax: allow address | CIDR | unix: | all;
Default: ——
Context: http, server, location, limit_except

address: IP地址
CIDR: 网段
UNIX: socket
all: 允许所有

Syntax: deny address | CIDR | unix: | all;
Default: ——
Context: http, server, location, limit_except

与allow相反,即不允许

实践:
在这里插入图片描述
对配置文件进行修改, 保存重启nginx。

当用浏览器访问/
在这里插入图片描述
访问/test.html
在这里插入图片描述
即本地无权访问/test.html

access的局限性: 如果访问并不是由客户端直接访问服务端, 而是通过代理进行访问, 那么仅仅识别ip是无法有效的进行限制的。
一种解决办法, 采用别的http头信息进行控制,如 x_forwarded_for,但不一定所有的代理都会存在该头信息,并且可能存在该信息被修改的情况:
在这里插入图片描述
另外: 可以结合GEO模块
还可以用http自定义变量传递


2.http_auth_basic_module

配置语法:

Syntax: auth_basic string | off;
Default: auth_basic off;
Context: http, server, location, limit_except 

string 所填的字符串非off即为开启, 且会作为提示出现

Syntax: auth_basic_user_file file;
Default: ——
Context: http, server, location, limit_except 

file 用来存储认证所用用户名密码的文件路径

实践:
首先生成存储用户名密码的文件
在这里插入图片描述
查看一下:

接下来编辑配置文件:
在这里插入图片描述
保存退出后检查语法, 重启nginx服务
浏览器访问/test.html, 有如下画面:
在这里插入图片描述
输入之前设置的账户密码后即可查看到页面

若不输入则返回401错误
在这里插入图片描述


同样, 这种验证方式也存在许多局限性, 操作繁琐,更改麻烦
当然也有几种解决方式:

  1. Nginx结合LUA实现高效验证
  2. Nginx和LDAP打通,利用nginx-auth-ldap模块
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值