ngx_http_access_module语句中allow和deny语句

nginx的ngx_http_access_module中allow和deny语句并存于一个location时,从各台机器上进行访问,匹配原则是:

allow语句和deny指令只要有一条匹配了,则不再执行其他的allow和deny指令。 如果没有匹配才继续往下执行其他的allow或者deny指令继续进行匹配。

举例分析:

例1:

 location /test5
{
        allow 127.0.0.1;
        deny 127.0.0.1;
        echo "Hello World!";
}
当从本机访问时,本机ip是127.0.0.1,与第一条allow指令的ip匹配,则不再执行下一句的deny指令。allow表示允许进行访问,再执行echo指令,输出“Hello World!”

当从其他机器访问时,其他机器ip不是127.0.0.1,因此与allow指令的ip不匹配,继续往下看deny指令的ip,依然不匹配,再执行echo语句,输出“Hello World!”


例2:

location /test6
{
        deny 127.0.0.1;
        allow 127.0.0.1;
        echo "Hello World!";
}

当从本机访问时,本机ip是127.0.0.1,与第一条deny指令的ip匹配,则不再执行下一条allow指令。deny表示不允许进行访问,当从本机进行访问时直接报403错误,不再进行后续任何语句。

当从其他机器访问时,其他机器ip不是127.0.0.1,因此与deny指令的ip不匹配,继续往下看allow指令的ip,依然不匹配,再执行echo指令,输出“Hello World!”


例3:

location /test8
{
        allow all;
        deny 127.0.0.1;
        echo "Hello World!";
}
当从本机访问时,本机ip是127.0.0.1,与第一条allow指令的all匹配,则不再执行下一条deny指令。allow表示允许进行访问,再执行echo指令,输出“Hello World!”
当从其他机器访问时,其他机器ip也属于all,因此也与第一条allow匹配,则不再执行下一条deny指令。allow表示允许进行访问,再执行echo指令,输出“Hello World!”

例4:

location /test9
{
        deny all;
        allow 127.0.0.1;
        echo "Hello World!";
}
当从本机访问时,本机ip是127.0.0.1,与第一条deny指令的all匹配,则不再执行下一条allow指令。deny表示不允许进行访问,不再执行后续任何指令,直接报403错误
当从其他机器访问时,其他机器也属于all,因此也与第一条deny指令的all匹配,则不再执行下一条allow指令。deny表示不允许进行访问,不再执行后续任何指令,直接报403错误
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值