Require all granted
允许所有请求访问资源
Require all denied
拒绝所有请求访问资源
Require env env-var [env-var] ...
当指定环境变量设置时允许访问
Require method http-method [http-method] ...
允许指定的http请求方法访问资源
Require expr expression
当expression返回true时允许访问资源
Require user userid [userid] ...
允许指定的用户id访问资源
Require group group-name [group-name] ...
允许指定的组内的用户访问资源
Require valid-user
所有有效的用户可访问资源
Require ip 10 172.20 192.168.2
允许指定IP的客户端可访问资源
Require not group select
select组内的用户不可访问资源
http://ylw6006.blog.51cto.com/470441/965119
注意:2.4.2版本的apache中需要在目录下面添加 Require all granted,否则无论怎么访问都是403,悲了个催的!具体报错如下:
[Fri Aug 10 19:07:13.263893 2012] [authz_core:error] [pid 8918:tid 1126259008] [client 192.168.123.102:53420] AH01630: client denied by server configuration: /tmp
[root@db1 ~]# grep -v '^#' /usr/local/apache/conf/extra/httpd-vhosts.conf |grep -v '^$'
<VirtualHost *:80>
ServerName 192.168.123.110
<Location />
Order deny,allow
Deny from all
</Location>
</VirtualHost>
<VirtualHost *:80>
ServerName www.yang.com
DocumentRoot /tmp
<Directory /tmp>
Options +indexes
Order allow,deny
Allow from all
Require all granted
</Directory>
</VirtualHost>
本文翻译自官方文档:《Upgrading to 2.4 from 2.2》
一、访问控制
在Apache2.2版本中,访问控制是基于客户端的主机名、IP地址以及客户端请求中的其他特征,使用Order(排序), Allow(允许), Deny(拒绝),Satisfy(满足)指令来实现。
在Apache2.4版本中,使用mod_authz_host这个新的模块,来实现访问控制,其他授权检查也以同样的方式来完成。旧的访问控制语句应当被新的授权认证机制所取代,即便Apache已经提供了mod_access_compat这一新模块来兼容旧语句。
这里有一些实例,用新方法取代旧语句实现相同的访问控制
实例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.org所有请求都被允许,其他拒绝
Apache2.2 配置:
Order Deny,Allow #排序,先拒绝后允许
Deny from all #拒绝所有
Allow from example.org #允许example.org
Apache2.4 配置:
Require host example.org #拒绝所有
二、Apache Require 指令
了解更多require指令用法:《Apache Module mod_authz_core》
附:常见访问控制指令
Require all granted #允许所有
Require all denied #拒绝所有
Require env env-var [env-var] ... #允许,匹配环境变量中任意一个
Require method http-method [http-method] ... #允许,特定的HTTP方法
Require expr expression #允许,表达式为true
Require user userid [ userid ] ... #允许,特定用户
Require group group-name [group-name] ... #允许,特定用户组
Require valid-user # #允许,有效用户
Require ip 10 172.20 192.168.2 #允许 特定IP
在apache2.4版本之前做客户端访问控制,是用Allow Deny Order指令做访问控制的,而在2.4的版本上是用的用法跟之前的版本大不相同,如下
################################################
2.2上的配置
Order deny,allow
Deny from all
2.4上的配置
Require all denied
################################################
2.2上的配置
Order allow,deny
Allow from all
2.4上的配置
Require all granted
#################################################
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
下面给出了几个例子在2.4版本上的配置
1. 仅允许IP为192.168.1.1的主机访问
<RequireAll>
require all granted
require ip 192.168.1.1
</RequireAll>
2.仅允许192.168.0.0/24网络的主机访问
<RequireAll>
require all granted
require ip 192.168.1.0/24
</RequireAll>
3.禁止192.168.1.2的主机访问,其他的都允许访问,
<RequireAll>
require all granted
require not ip 192.168.1.2
</RequireAll>
4.允许所有访问,
require all granted
注,这个可以不用加容器<RequireAll> ...... </RequireAll>
直接,写在 <Directory ""> .....</Directory>里面就可以了
5.拒绝所有访问,
require all denied
官方文档 http://httpd.apache.org/docs/2.4/howto/access.html