nginx 访问控制模块

截图,代码截屏均引用自慕课网nginx相关教学视频

基于用户的访问控制模块 http_access_module

基于用户登录信任的模块

  • http_access_module

参数示意:address 具体的ip地址,CIDR----网段例如192.168.0  unix:一种按照socket访问的方式 all;不做任何访问限制

有allow 对应的就有 deny;显然,在http语境下或是在location语境下,产生控制的范围是不一样的

 准备工作,从default.conf中复制一份副本出来 命名为access_mod.conf

对于access_mod.conf文件 nginx启动时是否会加载呢?答案是肯定的,因为打开主配置文件conf.d(如下图:)我们注意到

这意味着所有以conf为结尾的文件都会被加载

在access_mod.conf中可以做如下配置,这样一来,除了本机,任何外部网站都可以访问admin.html; deny后面跟随的是本机地址 可以通过ip138查出对应的外网地址;也可以通过ifconfig查询网卡地址

allow

deny

 

http_access_module带来的问题:由于客户端可能通过代理(nginx代理 或7层负载均衡 亦或是内容分发网络访问目标地址,而这时,nginx所获取到的remote_addr可能是这些代理的地址),因此http_x_forwarded_for应运而生

 

http_x_forwarded_for的格式如下

但作为请求头的http_x_forwarded_for 仍有可能被访问的发起方(客户端)篡改从而逃避检查,所以http自定义变量获取客户端真实的ip地址信息

 

 

 htpasswd一个第三方工具,其安装,检查过程如下

再次修改由default.conf演化而来的文件 access_mod.conf文件

 

 htpasswd插件的作用

1. htpasswd -c 创建一个名为auth_conf的密码文件,用户名为 jeson

权限提示语和相关密码校验文件的位置

 在浏览器中测试,用户名为jeson

 

局限:用户依赖文件,效率低下,多用户时,会创建多个文件,对于论坛来说更不可思议。nginx+LUA可以解决......

或者通过nginx和LDAP打通,也就是nginx中的nginx-auth-ldap模块

posted @ 2018-10-25 17:18  saintdingtheGreat  阅读(161)  评论(0编辑  收藏  举报