<-
Apache HTTP 服务器 2.4 > Apache模块mod_access_compat

Apache模块mod_access_compat

描述:基于主机(名称或IP地址)的组授权
状态:延期
模块标识符:access_compat_module
源文件:mod_access_compat.c
兼容性:在Apache HTTP Server 2.3中作为与Apache httpd 2.x以前版本的兼容性模块提供。新的authz重构已弃用此模块提供的指令。请参阅 mod_authz_host

摘要

所提供的指令mod_access_compat在使用<Directory><Files>以及 <Location>区段以及.htaccess 文件服务器的特定部分的访问。可以根据客户端主机名,IP地址或客户端请求的其他特征来控制访问,如环境变量中所述。在AllowDeny指令用于指定哪些客户端或不允许对服务器的访问,而Order 指令设置默认的访问状态,并配置如何 AllowDeny指令彼此交互。

基于主机的访问限制和基于密码的身份验证都可以同时实现。在这种情况下,该Satisfy伪指令用于确定两组限制如何相互作用。

注意

所提供的指令mod_access_compat已被弃用mod_authz_host。从技术上讲,可以将旧指令(例如OrderAllowDeny新 指令(例如)混合使用,Require但不建议这样做。创建该模块是为了支持仅包含旧指令的配置,以促进2.4升级。请查看升级指南以获取更多信息。

一般来说,访问限制指令适用于所有接入方式(GETPUTPOST等)。在大多数情况下,这是所需的行为。但是,可以通过将指令括在一<Limit>节中来限制某些方法,而使其他方法不受限制。

合并配置部分

在新的配置节中使用此模块提供的任何指令时,此模块提供的指令均不会从以前的配置节中继承。

支持Apache!

指令

错误修正清单

也可以看看

最佳

允许 指令

描述:控制哪些主机可以访问服务器区域
句法: Allow from all|host|env=[!]env-variable [host|env=[!]env-variable] ...
内容:目录.htaccess
覆写:限制
状态:延期
模块:mod_access_compat

Allow指令影响哪些主机可以访问服务器的区域。可以通过主机名,IP地址,IP地址范围或环境变量中捕获的客户端请求的其他特征来控制访问。

该指令的第一个参数始终为 from。后续参数可以采用三种不同的形式。如果Allow from all指定,则允许所有主机访问,但要遵循下面讨论的DenyOrder指令的配置 。要仅允许特定主机或主机组访问服务器,可以以下列任何一种格式指定主机

一个(部分)域名
Allow from example.org
Allow from .net example.edu

名称匹配或以该字符串结尾的主机被允许访问。仅匹配完整的组件,因此上面的示例将匹配,foo.example.org但不匹配fooexample.org。无论HostnameLookups指令的设置如何,此配置都会导致Apache httpd在客户端IP地址上执行双重DNS查找。它将对IP地址进行反向DNS查找,以找到关联的主机名,然后对主机名进行正向查找,以确保其与原始IP地址匹配。仅当正向和反向DNS一致且主机名匹配时,才允许访问。

完整的IP地址
Allow from 10.1.2.3
Allow from 192.168.1.104 192.168.1.205

主机允许访问的IP地址

部分IP地址
Allow from 10.1
Allow from 10 172.20 192.168.2

IP地址的前1至3个字节,用于子网限制。

网络/网络掩码对
Allow from 10.1.0.0/255.255.0.0

网络abcd和网络掩码wxyz用于更细粒度的子网限制。

网络/ nnn CIDR规范
Allow from 10.1.0.0/16

与前面的情况类似,除了网络掩码由nnn个高1位组成。

请注意,以上最后三个​​示例完全匹配同一组主机。

可以如下所示指定IPv6地址和IPv6子网:

Allow from 2001:db8::a00:20ff:fea7:ccea
Allow from 2001:db8::a00:20ff:fea7:ccea/10

Allow指令参数的第三种格式 允许根据环境变量的存在来控制对服务器的访问。当指定时,那么如果环境变量的请求被允许访问ENV-变量 是否存在。当指定时,则请求被允许访问,如果该环境变量ENV-变量不存在。服务器提供了使用所提供的指令根据客户端请求的特征灵活设置环境变量的功能 。因此,该指令可用于允许基于客户端 (浏览器类型),Allow from env=env-variableAllow from env=!env-variablemod_setenvifUser-AgentReferer或其他HTTP请求标头字段。

SetEnvIf User-Agent ^KnockKnock/2\.0 let_me_in
<Directory "/docroot">
    Order Deny,Allow
    Deny from all
    Allow from env=let_me_in
</Directory>

在这种情况下,以用户代理字符串开头的浏览器KnockKnock/2.0将被允许​​访问,而所有其他浏览器将被拒绝。

合并配置部分

在新的配置节中使用此模块提供的任何指令时,此模块提供的指令均不会从以前的配置节中继承。

最佳

拒绝 指令

描述:控制拒绝访问服务器的主机
句法: Deny from all|host|env=[!]env-variable [host|env=[!]env-variable] ...
内容:目录.htaccess
覆写:限制
状态:延期
模块:mod_access_compat

该指令允许根据主机名,IP地址或环境变量来限制对服务器的访问。对于这些参数Deny的指令是相同的论据,Allow指令。

最佳

订单 指令

描述:控制默认访问状态以及对AllowDeny进行评估的顺序 。
句法: Order ordering
默认:Order Deny,Allow
内容:目录.htaccess
覆写:限制
状态:延期
模块:mod_access_compat

Order指令与AllowDeny指令一起 控制三遍访问控制系统。第一遍处理指令指定的所有Allow或所有 指令。第二遍解析其余的指令(或 )。第三遍适用于所有与前两个都不匹配的请求。DenyOrderDenyAllow

请注意,所有AllowDeny指令都经过处理,这与典型的防火墙不同,在典型的防火墙中,仅使用第一个匹配项。最后一个匹配有效(也不同于典型的防火墙)。此外,行在配置文件中的显示顺序并不重要-所有Allow行都作为一个组处理,所有Deny行都视为另一组,并且默认状态由其自身考虑。

订购是以下之一:

Allow,Deny
首先,Allow评估所有指令;至少一个必须匹配,否则请求被拒绝。接下来,Deny 评估所有指令。如果有匹配项,则请求被拒绝。最后,默认情况下会拒绝与AllowDeny指令不匹配的任何请求。
Deny,Allow
首先,Deny评估所有指令;如果有匹配项,则除非该请求也与Allow指令匹配,否则该请求将被拒绝 。允许与请求AllowDeny指令不匹配的任何请求。
Mutual-failure
此命令与它具有相同的效果,Order Allow,Deny并且不赞成使用。

关键字只能用逗号分隔; 它们之间不允许有空格

比赛 允许,拒绝结果 拒绝,允许结果
仅匹配允许 允许请求 允许请求
仅匹配拒绝 请求被拒绝 请求被拒绝
没有匹配 默认为第二个指令:拒绝 默认为第二指令:允许
匹配允许和拒绝 决赛控制:拒绝 决赛控制:允许

在以下示例中,允许example.org域中的所有主机访问;所有其他主机都被拒绝访问。

Order Deny,Allow
Deny from all
Allow from example.org

在下一个示例中,example.org域中的所有主机都被允许访问,但foo.example.org子域中的主机被拒绝访问。由于默认状态是Deny 访问服务器,因此所有不在example.org域中的主机都被拒绝访问。

Order Allow,Deny
Allow from example.org
Deny from foo.example.org

另一方面,如果将Order上一个示例中的更改为Deny,Allow,则将允许所有主机访问。发生这种情况的原因是,无论配置文件中指令的实际顺序如何, Allow from example.org都会最后评估,并将覆盖Deny from foo.example.orgexample.org也将允许所有不在该域中的主机访问,因为默认状态为Allow

Order伪指令的存在可能会影响对服务器一部分的访问,即使在没有附带 指令AllowDeny伪指令的情况下,因为它会影响默认访问状态。例如,

<Directory "/www">
    Order Allow,Deny
</Directory>

将拒绝对/www目录的所有访问,因为默认访问状态设置为 Deny

Order指令仅在服务器配置处理的每个阶段内控制访问指令处理的顺序。这意味着,例如,一个 AllowDeny指令在发生 <Location>部分将总是后进行评估AllowDeny指令以发生 <Directory>部分或 .htaccess文件,而不管的设置的 Order指令。有关合并配置部分的详细信息,请参阅“ 目录,位置和文件”部分的工作方式文档。

合并配置部分

在新的配置节中使用此模块提供的任何指令时,此模块提供的指令均不会从以前的配置节中继承。

最佳

满足 指令

描述:主机级访问控制和用户身份验证之间的交互
句法:Satisfy Any|All
默认:Satisfy All
内容:目录.htaccess
覆写:验证配置
状态:延期
模块:mod_access_compat
兼容性:受影响<Limit><LimitExcept>在2.0.51版及更高版本

访问策略如果同时AllowRequire使用。参数可以是AllAny。仅当用户名/密码客户端主机地址都限制了对特定区域的访问时,此指令才有用。在这种情况下,默认行为(All)是要求客户端通过地址访问限制输入有效的用户名和密码。使用该Any选项,如果客户端通过主机限制或输入有效的用户名和密码,则将授予客户端访问权限。这可用于密码限制区域,但允许来自特定地址的客户端进入而无需提示输入密码。

例如,如果您想让网络中的人可以不受限制地访问网站的一部分,但是要求网络外的人提供密码,则可以使用类似于以下的配置:

Require valid-user
Allow from 192.168.1
Satisfy Any

Satisfy指令的另一个常见用法是放宽对子目录的访问限制:

<Directory "/var/www/private">
    Require valid-user
</Directory>

<Directory "/var/www/private/public">
    Allow from all
    Satisfy Any
</Directory>

在上面的示例中,/var/www/private目录将需要身份验证,但目录将不需要身份验证 /var/www/private/public

由于版本2.0.51 Satisfy指令可以由<Limit><LimitExcept>部分限制为特定方法。

合并配置部分

在新的配置节中使用此模块提供的任何指令时,此模块提供的指令均不会从以前的配置节中继承。

也可以看看

可用语言: zh  |  fr  |  ja 

最佳

注释

注意:
这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上),或发送至我们的邮件列表
目前,此页面已禁用评论。