Nginx详解九:Nginx基础篇之Nginx的访问控制

Posted zhongyehai

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Nginx详解九:Nginx基础篇之Nginx的访问控制相关的知识,希望对你有一定的参考价值。

 

基于IP的访问控制:http_access_module

 

不允许指定网段的用户访问:
配置语法:deny address | CIDR | unix: | all;
默认状态:-
配置方法:http、server、location、limit_except

 

把最原始的配置文件做好备份,并复制一份在这里,命名为:access_mod.cof

技术图片

技术图片

技术图片

检查语法并重载
nginx -tc /etc/nginx/nginx.conf
nginx -s reload -c /etc/nginx/nginx.conf

 技术图片

访问到之前放在里面的页面,说明配置成功

 技术图片

 

要参与测试的ip:

技术图片

技术图片

 

复制一个location进行配置

技术图片

检查语法并重载

 技术图片

访问

 技术图片

换虚拟机访问

技术图片

 

只允许指定网段的用户可以访问:
配置语法:allow address | CIDR | unix: | all;
默认状态:-
配置方法:http、server、location、limit_except

 复制一个location进行配置

技术图片

 检查配置是否成功,并重载

技术图片

设置的ip访问成功

技术图片

 未设置的ip访问失败

技术图片

 

 http_access_module的局限性:

由于此实现的原理是基于客户端的ip来控制,但是nginx并不知道哪一个ip是真正的客户的,如果客户端与服务端的nginx之间还有一层代理(如其他的中间件),如对下图的中对IP1访问IP3做控制,此时IP1经过中间件后,放IP3发送的请求为IP2,即控制失败,所以只能通过$remote_addr控制允许访问,不能控制拒绝访问

技术图片

 

解决办法:

方法一:采用别的HTTP头信息控制访问,如:HTTP_X_FORWARD_FOR

方法二:结合geo模块作

方法三:通过HTTP自定义变量传递(推荐此方法)

 

http_x_forwarded_for:

http_x_forwarded_for是http头信息协议规定要携带的内容,在IP2上面看到的是IP1的http_x_forwarded_for信息,在IP3上看到的是IP1,IP2的http_x_forwarded_for信息,所以http_x_forwarded_for可以看到通过所有代理的信 技术图片

配置语法:http_x_forwarded_for=Client IP ,Proxy(1),Proxy(2)IP,...

 

 

 

基于用户的信任登录:http_auth_basic_module

配置语法:auth_basic string | off;
string:即表示开启,有会在前端显示这个字符串的信息,有也可以作为前端的登录提示
默认状态:auth_basic off;
配置方法:http、server、location、limit_except

 

 

配置语法:auth_basic_user_file filePath;
filePath:用来存储用户认证信息的文件
默认状态:-;
配置方法:http、server、location、limit_except

 

官方文档:http://nginx.org/en/docs/http/ngx_http_auth_basic_module.html

技术图片

如果没有的话需安装,我这里已经安装了

技术图片

做好备份,并把配置文件命名为auth_mod.conf

技术图片

 在上一级目录,用htpasswd命令生成一个名为./auth_conf的文件,并写入一个用户名和密码,我这里设置的是admin,密码111111

技术图片

开始配置

技术图片

 技术图片

检查语法并重载

技术图片

访问,需输入用户名密码

技术图片

 

http_auth_basic_module 的局限性

一:用户信息依赖文件方式

二:操作机械,效率低下

 

解决方案:

一:Nginx结合LUA实现高效验证

二:Nginx和LDAP打通,利用nginx-auth-ldap模块

 

以上是关于Nginx详解九:Nginx基础篇之Nginx的访问控制的主要内容,如果未能解决你的问题,请参考以下文章

Nginx详解六:Nginx基础篇之Nginx日志

Nginx详解五:Nginx基础篇之HTTP请求

Nginx详解二十五:Nginx架构篇之Nginx常见的问题

Nginx详解十八:Nginx深度学习篇之Rewrite规则

Nginx详解二十六:Nginx架构篇之性能优化

Nginx详解二十四:Nginx深度学习篇之灰度发布