Nginx 访问控制
Nginx的访问控制
基于IP的访问控制:http_access_module
允许那些ip进行访问,不允许那些ip进行访问
基于用户的信任登陆:http_auth_basic_module
进行用户的登陆进行认证,需要进行认证才可
1、http_access_module的配置
允许访问的配置
Syntax: allow address | CIDR(网段)|unix:(socket的访问)|all(允许所有的);
Default: -
Context: server,location,limit_except
不允许访问的配置
Syntax: deny address | CIDR(网段)|unix:(socket的访问)|all(允许所有的);
Default: -
Context: server,location,limit_except
测试:
~^ 进行匹配路径认证
此时使用已禁止的ip进行访问
启用其他ip地址进行测试
这个设置是有优先级的
先执行前面的在执行后面的
局限性
1、只能通过 $remote_adde 控制信任
访问不是客户端和服务端连接
通过代理连接(中间)
Nginx的ip基于remote_addr进行识别IP的
此时对ip1做出的限制是没有进行成功的限制的
此时做的只是对中间的代理做出的限制
2、http_x_forwarded_for
http常用的一个变量
3、http_x_forwarded_for
http_x_forwarded_for = Client IP,Proxy(1) IP ,Proxy(2)IP,...
4、http_access_module 局限性
方法1:
采用别的http头信息控制访问 如:http_x_forward_for
方法2:
结合geo模块
方法3:
通过http自定义变量传递
2、http_auth_basic_module
用户登陆认证的模块
syntax: auth_basic string | off;
default: auth_basic off
context: server.loction.limit_except
进行配置用户相关的登陆设置
sytax: auth_basic_user_file file;
default: -
context: server,location,limit_except
进行对上述的引入
配置配置文件
此时使用的用户名是mrchengs
密码:123456
相关创建性的步骤
配置文件的修改
进行登陆测试
账户mechengs 密码123456
局限性
1、用户信息依赖文件方式
2、操作管理机械,效率低下
解决方式
1、Nginx结合LUA实现高效验证
2、Nginx和LDAP打通,利用nginx-auth-ldap模块