Ste*_*ski 26 mod-authz-host apache-2.2
我正在运行 CentOS 5.5 和 Apache httpd-2.2.3。
我在位置 /server-status启用了mod_status。我想通过以下方式允许访问这个单一位置:
1 & 2 很简单。但是,由于我“允许来自 192.168.16.0/24”,是否可以拒绝来自 192.168.16.100?
我试图为 192.168.16.100 添加拒绝语句,但它不起作用。这是相关的配置:
<Location /server-status>
SetHandler server-status
Order Allow,Deny
Deny from all
Deny from 192.168.16.100 # This does not deny access from 192.168.16.100
Allow from 192.168.16.0/24
</Location>
Run Code Online (Sandbox Code Playgroud)
或者:
<Location /server-status>
SetHandler server-status
Order Allow,Deny
Deny from all
Deny from 192.168.16.100 # This does not deny access from 192.168.16.100
Allow from 192.168.16.0/24
</Location>
Run Code Online (Sandbox Code Playgroud)
但是,这不会阻止访问此特定页面,如访问日志中所示:
www.example.org 192.168.16.100 - - [11/Mar/2011:16:01:14 -0800] "GET /server-status HTTP/1.1" 200 9966 "-" "
Run Code Online (Sandbox Code Playgroud)
根据mod_authz_host的手册:
允许否认
首先,评估所有 Allow 指令;至少有一个必须匹配,否则请求将被拒绝。接下来,评估所有 Deny 指令。如果匹配,则拒绝请求
IP 地址匹配 Deny 指令,所以不应该拒绝请求吗?
根据 mod_authz_host 页面上的表格,此 IP 地址应“同时匹配允许和拒绝”,因此应应用“最终匹配控制:拒绝”规则。
匹配允许、拒绝结果 拒绝、允许结果
仅匹配允许请求允许请求允许
仅匹配拒绝 请求被拒绝 请求被拒绝
不匹配 默认为第二个指令:拒绝 默认为第二个指令:允许
匹配允许和拒绝 最终匹配控件:拒绝 最终匹配控件:允许
phu*_*ehe 36
我还没有测试,但我想你快到了。
<Location /server-status>
SetHandler server-status
Order Allow,Deny
Deny from 192.168.16.100
Allow from 192.168.16.0/24
</Location>
Run Code Online (Sandbox Code Playgroud)
Deny from all不需要。事实上,它会搞砸,因为一切都会匹配all,因此被拒绝(我认为 Apache 正试图变得聪明并做一些愚蠢的事情)。我总是发现 Apache 的Order,Allow和Deny指令令人困惑,所以总是在表格中可视化事物(取自docs):
匹配 | 允许,拒绝结果 | 拒绝,允许结果 -------------------------------------------------- ----- 只允许 | 允许 | 允许 仅拒绝 | 拒绝 | 拒绝 不匹配 | 默认值:拒绝 | 默认值:允许 两者都匹配 | 决赛:拒绝 | 决赛:允许
使用上述设置:
| 归档时间: |
|
| 查看次数: |
106903 次 |
| 最近记录: |