Apache服务器可以通过修改http.conf文件来达到上述目的。Apache核心指令中,<Limit>/<LimitExcept>配置段用于对指定的HTTP方法进行访问控制,<Directory>/<Files>/<Location>配置段则是用于将它们封装起来的指令集作用于指定的目录、文件或网络空间(详见《Apache核心(Core)指令<Location>和<Directory>区别》)。因此,将<Limit>/<LimitExcept>配置段和<Directory>/<Files>/<Location>配置段联合起来,就能实现Apache对指定HTTP请求进行访问控制的功能。它们的配置形式(以<Directory>和<Limit>/<LimitExcept>说明)可以表示如下:
1 2 3 4 5 6 7 |
|
上述配置表示,对于任何用DELETE、TRACE、OPTIONS方法访问C:/apache/www目录里资源文件的请求都会被apache服务器拒绝(403 Fobidden)。还可以这样表示:
1 2 3 4 5 6 7 |
|
这段配置表示,对于任何用GET、POST、HEAD方法访问C:/apache/www目录里资源文件的请求都会被apache服务器拒绝(403 Fobidden)。相当于前一个(<Limit>)是黑名单策略,后一个(<LimitExcept>)是白名单策略。
为方便测试,可以用Telnet模拟HTTP请求来对配置进行验证:
1、模拟GET请求,HTTP返回码为200 OK,表示GET请求正常执行,如下图所示:
2、模拟DELETE请求,HTTP返回码为403 Forbidden,表示DELETE请求被禁止,如下图所示:
关于这段配置有两点需要注意的地方:
1、配置完http.conf文件后,必须重启apache服务,配置才能生效。
2、<Limit>/<LimitExcept>配置段里的Order、Allow、Deny指令需加载mod_authz_host.so模块,否则无法使用[1]