deny和allow都是在access阶段
allow和deny都可以在http,server,location,limit_except中使用
如果被deny则会返回“403 Forbidden”报错信息
以下几个场景能够说明清楚这2个命令的具体是怎么用的
location / {
deny 192.168.1.1; #支持单个IP
allow 192.168.1.0/24; #支持一个网段
allow 2001:0db8::/32; #支持ipv6
deny all; #支持all匹配到所有
}
# 问:192.168.1.1 匹配到了上面的第1,2,4行,请问该ip是deny还是allow?
# 答:deny和allow是顺序匹配,匹配到即停止。所以第一条匹配到后,就直接deny了
server {
allow 10.0.9.14;
listen 8813;
location / {
deny 10.0.9.14;
}
}
#问:10.0.9.14在server中allow和locaton中deny都匹配到,到底是哪个生效?
#答:deny生效。参考变量的生效规则。
#问:如果一个ip没有被deny也没被allow,则怎么处理?
#答:allow
http {
deny all;
server {
allow 10.0.9.14;
listen 8813;
location / {
}
}
}
#问,除了10.0.9.14,其它的ip是否能够访问?
#答,可以。因为server中已经有了allow或deny指令,所以http中的不生效。没写allow和deny的ip默认是allow
http {
deny all;
server {
listen 8813;
location / {
}
}
}
#问:所有ip能否访问?
#答:不能,因为http中的deny all生效了。