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

一、用户访问控制模块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;

}

设置后的效果如下:

d6864afbe5bed21c647e480e9fa11d0a.png

设置步骤:

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

317773b8cdfd73a92f9ca0bb13f47514.png

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

a16833ed306338163c542d2d309a99cf.png

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

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值