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