nginx访问限制:限制客户端ip及需要用户名密码认证
一、nginx访问需要用户名密码认证
nginx访问需要用户名密码认证使用的模块是ngx_http_auth_basic_module
,这个模块允许使用"HTTP基本验证"协议进行用户名密码验证来限制资源的访问,
nginx访问限制也可以通过客户端ip来限制用户的访问。同时限制客户端ip访问和需要用户名密码认证,需要使用指令statisfy
1、配置例子
nginx访问限制也可以通过客户端ip来限制用户的访问。同时限制客户端ip访问和需要用户名密码认证,需要使用指令statisfy
location / { auth_basic "closed site"; auth_basic_user_file conf/htpasswd; }
2、指令说明
语法:auth_basic
string
| off
;
默认:auth_basic off;
所属指令:http
, server
, location
, limit_except
“HTTP Basic Authentication”协议的用户名密码认证。指定的参数被用作为标识符,提示你访问页面的大概信息(可以随意指定,但建议指定跟所限制内容相关的字符串)。参数off可以关闭继承自上一个配置等级的认证要求,即在server中开启了认证,但是我们可以关闭某一个目录的用户名密码认证要求。
开启使用
语法:auth_basic_user_file file;
默认:-
所属指令:
http
, server
, location
, limit_except
指定一个保存有用户名密码认证内容的文件路径,文件内容格式是
# comment name1:password1 name2:password2:comment name3:password3
密码应该使用函数crypt()
来加密。可以使用Apache中自带的htpasswd命令来建立这样一个用于用户名密码认证的文件。
二、nginx限制客户端ip访问
nginx限制客户端ip访问使用的模块是ngx_http_access_module,这个模块可以进行nginx限制客户端ip访问。
nginx访问限制也可以用用户名密码认证来实现。同时限制客户端ip访问和需要用户名密码认证,需要使用指令statisfy
1、配置示例
location / { deny 192.168.1.1; allow 192.168.1.0/24; allow 10.1.1.0/16; allow 2001:0db8::/32; deny all; }
规则按顺序检测,至道第一个匹配的规则出现。在这个例子中,只允许IPV4的10.1.1.0/16和192.168.1.0/24中出去192.168.1.1及IPV6中的
2001:0db8::/32来访问,其他的客户端ip访问都是不允许的。
为了预防有太多的规则,使用模块ngx_http_geo_module是更可取的。
2、指令
语法:allow
—address
| CIDR
| all
;
默认:
所属指令:
http
, server
, location
, limit_except
指定的IP地址己网段都可以访问。
语法:deny
—address
| CIDR
|all
;
默认:
所属指令:
http
, server
, location
, limit_except
指定的IP地址及网段都不可以访问。
三、
nginx同时限制客户端ip与用户名密码认证
nginx同时限制客户端ip于用户名密码认证,需要使用指令satisfy
语法:satisfy all|deny;
默认:satisfy all;
所属指令:
http
, server
, location
是否要求模块和中的所有ngx_http_auth_basic_module
或
ngx_http_access_module
任意一个认证通过才可以访问。
例子
location / { satisfy any; allow 192.168.1.0/32; deny all; auth_basic "closed site"; auth_basic_user_file conf/htpasswd; }
Linux大师之路首页链接:http://www.linuxmr.com/
该中文文档目录链接:http://www.linuxmr.com/cms_chinese_doc/