Nginx的否认和允许https://coding.net/u/aminglinux/p/nginx/git/blob/master/access/deny_allow.md
Nginx访问控制——deny_allow
Nginx的否认和允许指令是由ngx_http_access_module模块提供,Nginx安装默认内置了该模块。
除非在安装时有指定——without-http_access_module。
语法
语法:允许/拒绝地址| CIDR unix: | |所有
它表示,允许/拒绝某个ip或者一个ip段访问。如果指定unix:,那将允许插座的访问。
注意:unix在1.5.1中新加入的功能。
在nginx中,允许和拒绝的规则是按顺序执行的。
示例
示例1:位置
/
{
允许192.168.0.0/24;
允许127.0.0.1;
否认;
}
说明:这段配置值允许192.168.0.0/24网段和127.0.0.1的请求,其他来源IP全部拒绝。
示例2:
位置~“admin"
{
允许110.21.33.121;
否认所有
}
说明:访问的uri中包含管理的请求,只允许110.21.33.121这个IP的请求。
基于位置的访问控制
在生产环境中,我们会对某些特殊的请求进行限制,比如对网站的后台进行限制访问。
这就用到了位置配置。
示例1
位置/摘要/
{
否认;
}
说明:针对/摘要/目录,全部禁止访问,这里的否认所有可以改为返回403。
{
返回403;
}
说明:访问的uri中包含. bak字样的或者包含.ht的直接返回403状态码。
测试链接举例:
-
李<李>www.aminglinux.com/123.bak >
李<李>www.aminglinux.com/aming/123/.htalskdjf >
李>
Nginx基于document_uri美元的访问控制
这就用到了变量document_uri美元,根据前面所学内容,该变量等价于美元uri,其实也等价于位置匹配。
示例1
if ($ document_uri ~“/admin/?
{
返回403;
}
说明:当请求的uri中包含/admin/时,直接返回403。
如果结构中不支持使用允许和拒绝。
测试链接:
-
<李>www.aminglinux.com/123/admin/1.html匹配李>
<李>www.aminglinux.com/admin123/1.html不匹配李>
<李>www.aminglinux.com/admin.php不匹配李>
示例3
#下面两种的结果不同
if ($ document_uri ~/数据/|/缓存。。php的美元)
#如果($ document_uri ~”(/数据/|/缓存/)。。php的美元)
{
返回403;
}
说明:请求的uri包含数据或者缓存目录,并且是php时,返回403状态码。
测试链接:
-
<李>www.aminglinux.com/data/123.php匹配李>
<李>www.aminglinux.com/cache1/123.php不匹配李>
nginx基于美元request_uri访问控制
request_uri美元比docuemnt_uri美元多了请求的参数。