• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • 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>节中来限制某些方法,而使其他方法不受限制。

    合并配置部分

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

    允许指令

    描述:控制哪些主机可以访问服务器区域
    句法: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指令仅在服务器配置处理的每个阶段内控制访问指令处理的顺序。例如,这意味着在节中出现的Allowor Deny指令<Location>将始终在节或文件中出现的Allowor Deny指令之后进行求值,而与指令的设置无关。有关合并配置部分的详细信息,请参阅“目录,位置和文件”部分的工作方式文档。<Directory>.htaccessOrder

    合并配置部分

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

    满足指令

    描述:主机级访问控制和用户身份验证之间的交互
    句法: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>部分限制为特定方法。

    合并配置部分

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

    参见

    • Allow
    • Require

    上篇:mpm_worker

    下篇:mod_actions