Apache2.2 与 Apache2.4 实现访问控制的教程

在 httpd 配置文件中,要实现访问控制可以基于文件系统或者 URL 路径来进行

文件系统路径:

1、针对网站目录进行访问控制

<Directory "">

2、针对某单一文件进行访问控制

<File "">

3、使用正则表达式对某些文件进行访问控制

<FileMatch “PATTERN”>

URL 路径:

<Location "">

在新的 Apache2.4 版本中,其访问控制的配置语法与 Apache2.2 不同。在 Apache2.2 版本中,访问控制是基于客户端的主机名、IP 地址以及客户端请求中的其他特征,使用 Order(排序),Allow(允许),Deny(拒绝) 指令来实现,被拒绝后的用户访问页面会提示 403 错误。在 Apache2.4 版本中,使用 mod_authz_host 模块实现访问控制。如下是一些示例以示区别:
实例 1:所有请求都被拒绝

Apache2.2 配置:
Order deny,allow #排序,先拒绝后允许
Deny from all #拒绝所有

Apache2.4 配置:
Require all denied #拒绝所有

实例 2:所有请求都被允许

Apache2.2 配置:
Order allow,deny #排序,先允许后拒绝
Allow from all #允许所有

Apache2.4 配置:
Require all granted #允许所有

实例 3:example.com 所有请求都被允许,其他拒绝

Apache2.2 配置:
Order Deny,Allow #排序,先拒绝后允许
Deny from all #拒绝所有
Allow from example.com #允许 example.com

Apache2.4 配置:
Require host example.org #用 host 来指定主机名,也可以用 ip 来替代 host 标签,这样后面就需要跟上对应 ip 信息
实例 4:允许所有主机访问,仅拒绝某主机

Apache2.4 配置:
#需要增加一个容器
require all granted
require not ip 192.168.100.10