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

原文地址:https://www.cnblogs.com/Mrchengs/p/11938263.html