在配置Apache HTTP Server的时候,经常会用到
Allow
、Deny
这两个个指令,来实现目录权限控制、内外网隔离的功能。然而这两个指令是怎样相互配合使用的呢?
mod_authz_host
mod_authz_host是Apache HTTP Server的一个官方标准模块,主要提供三个指令:Allow
,Deny
和Order
,指令用在<Directory>
, <Files>
, <Location>
中,也用于.htaccess
文件中控制对服务器特定部分的访问。Allow
和Deny
指令用于指出允许哪些用户主机及不允许哪些用户主机访问服务器,而Order
指令设置默认的访问状态并配置Allow
和Deny
指令怎样相互作用。
Allow
Allow,控制哪些主机能够访问服务器的某些区域。
用法:
1 | Allow from 10.1.2.3 |
Deny
Deny,控制哪些主机被禁止访问服务器的某些区域。
用法:
1 | Deny from 10.1.2.3 |
Order
Order,控制默认的访问状态与Allow
和Deny
指令生效的顺序
在没有Order
指令的情况下,Allow
的优先级会比Deny
高,如下配置实际上没有限制IP10.1.2.3主机的访问权限:
1 | Deny from 10.1.2.3 |
Order的有三种取值:
Deny,Allow
Deny指令在Allow指令之前被评估。默认允许所有访问。任何不匹配Deny指令或者匹配Allow指令的客户都被允许访问。Allow,Deny
Allow指令在Deny指令之前被评估。默认拒绝所有访问。任何不匹配Allow指令或者匹配Deny指令的客户都将被禁止访问。Mutual-failure
只有出现在Allow列表并且不出现在Deny列表中的主机才被允许访问。这种顺序与”Order Allow,Deny”具有同样效果,不赞成使用。
关键字只能用逗号分隔,
它们之间不能有空格。注意在所有情况下每个Allow
和Deny
指令语句都将被评估。