本站所有文章均为原创,如对您有帮助,恳请帮忙点击任何一处广告
  • 首页
  • Nginx
  • 【Nginx模块配置教程】用户访问控制与认证模块ngx_http_access_module、ngx_http_auth_basic_module

【Nginx模块配置教程】用户访问控制与认证模块ngx_http_access_module、ngx_http_auth_basic_module

发布:TangLu2018-9-18 14:01分类: Nginx 标签: Nginx

一、用户访问控制模块ngx_http_access_module

如果在Nginx中想控制某个路径无法让指定用户访问(限制IP访问),需要使用到的模块是ngx_http_access_module。说模块名可能不熟悉,但是说到allow和deny就一定知道是干什么的了。这个模块是默认就会安装的,除非在编译时加上了--without-http_access_module。下面是ngx_http_access_module的配置语法示例:

location / {
deny  192.168.1.120;
allow 192.168.1.0/24;
allow 10.1.1.0/16;
deny  all;
}


Nginx和iptables的匹配规则一样,从上往下进行匹配,只要遇到符合条件的规则就不再继续往下匹配。如上例子中首先禁止192.168.1.120这个IP的访问,然后允许了另外2个网段的IP访问,最后不符合匹配条件的IP全部禁止访问。在实际工作中只要记住想禁止哪个IP访问就deny掉对应的IP,想允许则加上allow ip,想禁止或者允许所有的IP访问就使用allow all或者deny all。


二、用户认证模块ngx_http_auth_basic_module

Nginx进行用户名密码验证的话是通过ngx_http_auth_basic_module模块实现,该模块可作用范围http,server,location,limit_except,语法如下:

location / {
    auth_basic           "Please input your name";
    auth_basic_user_file /etc/nginx/htpasswd;
}


设置后的效果如下:

nginxbasicautu.png

设置步骤:

由于认证文件需要通过htpasswd命令,所以需要先安装httpd-tools这个工具,然后使用该命令建立登录文件及用户名密码,第一次创建需要加-c选项,之后新增用户时不用再加-c,-m代表md5加密,然后就是指定文件路径及最后的用户名密码了

nginxbasic2.jpg

创建好了后修改nginx.conf文件,引用模块,并指定文件路径,也就是上一步时创建的路径,然后访问location指定的路径时就会弹出窗口需要用户名密码才可以登录了

nginxbasic1.jpg

http_auth_basic_module有一个局限性就是用户信息依赖于文件,如果想避免这个问题的话就需要考虑Nginx与LUA结合实现高效验证;或者利用nginx_auth_ldap模块实现与LDAP结合。

温馨提示如有转载或引用以上内容之必要,敬请将本文链接作为出处标注,谢谢合作!
et_highlighter51
版权所有:《Linux运维技术学习站点
文章标题:《【Nginx模块配置教程】用户访问控制与认证模块ngx_http_access_module、ngx_http_auth_basic_module
除非注明,文章均为 《Linux运维技术学习站点》 原创
转载请注明本文短网址:http://www.linuxe.cn/post-344.html  [生成短网址]

已有 0/2805 人参与

发表评论:

欢迎分享Linux运维技术学习站点

欢迎使用手机扫描访问本站,还可以关注微信哦~