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模块

 

 

posted @ 2019-11-27 09:33  MrChengs  阅读(204)  评论(0编辑  收藏  举报