author:咔咔nginx
wechat:fangkangfk测试
基于ip的访问控制代理
http_access_moduleunix
基于用户信任登陆code
http_auth_basic_moduleserver
下来咱们解释第一个基于IP的访问控制
语法: ip
// 容许的访问 ip Syntac:allow address | CIDR | unix: | all Default: Context: http,server,location,limit_except // 不容许访问 Syntac:deny address | CIDR | unix: | all Default: Context: http,server,location,limit_except
配置:it
第一种是除了222.128.189.17ip不可访问,其余的任何形式均可以访问io
第二种是只容许222.128.189.17ip访问,其余的都不容许访问 反向代理
以上的访问都是基于http_access_module访问的
下来咱们说一下这种方式的局限性
http_access_mosule这种基于ip控制访问的是须要客户端直接请求服务端才能够生效的,可是咱们使用nginx最长用的功能就是反向代理,从下图就能够看出来,只要通过反向代理咱们的服务端是获取不到客户端的ip的。
这个时候就有个好东西出现了,那就是x_forwarded_for,这个协议是能够将客户的ip跟反向代理的ip一块儿发送给咱们的服务端,就解决了这个问题
解决方案:
方法一:采用别的HTTP头信息控制访问,如HTTP_X_FORWARD_FOR,但这是一种协议,并非所有都支持
方法二:结合geo模块来实现(这个须要在后边单独讲解)
方法三:经过http自定义变量传递
实现方式二:基于用户信任登陆
http_auth_basic_module
咱们须要先安装这个库
yum -y install httpd
建立一个用户kaka的用户
修改nginx.conf配置文件
测试
对于http_auth_basic_module局限性,这里简单的提一下俩个方案
这个在后边的都会写到的,先知道有这个就能够了,掌握http_auth_basic_module这个控制模块
对于这个htpasswd这个用法也简单的说一下
// 修改一个用户密码 htpasswd -d password.user kaka // 添加一个用户直接用户密码写完 htpasswd -b .passwd Jack 123456 // 删除一个用户 htpasswd -D password.user kaka