在 Apache 指令中,将“Deny from All”放在“Allow from All”之前有什么意义?

在 Apache 指令中,将“Deny from All”放在“Allow from All”之前有什么意义?

我已经看到许多httpd.conf包含如下指令的示例文件这是来自 IBM 的

<Location /server-status>
    SetHandler server-status
    Order Deny,Allow
    Deny from all
    Allow from all
</Location>

事实上,在谷歌上搜索这个确切的短语“全部拒绝,全部允许”返回近 300 万个结果。

我对此指令的理解是,根据指定的Order,Apache 会拒绝您访问,/server-status无论您是谁,但随后会立即推翻该决定并允许您访问。这是正确的吗?上述指令与下一个指令之间是否存在功能(甚至理论或哲学)差异?

<Location /server-status>
    SetHandler server-status
    Order Deny,Allow
    Allow from all
</Location>

答案1

根据Apache 文档

排序是以下之一:

允许否认 首先,评估所有 Allow 指令;至少必须有一个匹配,否则请求将被拒绝。接下来,评估所有 Deny 指令。如果有任何匹配,则请求将被拒绝。最后,任何不匹配 Allow 或 Deny 指令的请求都将被默认拒绝。

否认允许 首先,评估所有 Deny 指令;如果匹配,则请求将被拒绝,除非它还匹配 Allow 指令。任何不匹配任何 Allow 或 Deny 指令的请求都会被允许。

共同失败 此命令与“允许、拒绝命令”具有相同的效果,并且已被弃用。

在这种情况下,全部评估拒绝指令;如果匹配,则请求被拒绝,除非它也匹配全部允许指令。

相关内容