zoukankan      html  css  js  c++  java
  • Apache配置文件httpd.conf/htaccess中deny和allow的使用

    看下下面的apache的一个配置,具体代码如下:

    <Directory />
        Order allow,deny  #1
        Allow from all #2
        deny from 192.9.200.69 #3
    </Directory>
    

    Allow和Deny哟关于apache的conf文件或者htaccess文件中(配合Directory,Location,Files等),用来控制目录和文件的访问授权。
    注意 deny和allow之间有一个逗号,不是空格,且只能有一个逗号,大小写不限。

    所以,最常用的是:
    Order Deny,Allow
    Allow from All

    规律:

    当看到apache的配置时可以从一下角度来理解,一默认,二顺序,三重叠。

    • 一默认Order allow,deny ,这句话的作用是配置allow和deny的顺序,默认只有最后一个关键字起作用,所以这里起作用的就是deny——拒绝,所以要拒绝/允许某个特殊的IP就将此策略(拒绝/允许)放在order这一句的最后
    • 二顺序Order规定了规则的执行(判断)顺序,不管下面的allow和deny的顺序如何,都会按着Order .... 这一句的规定的allow和deny的顺序来执行 allow和deny的规则,比如Order allow,deny,那么限制性allow的规则,在执行deny的规则,即时下面先写的deny规则 后写的allow规则
    • 三重叠 apache会按照order顺序,把所有规则都判断了,就像路由的规则一样,比如上面的Allow from all 允许所有请求通过,deny from 192.9.200.69 拒绝来自192.9.200.69的包,最终结果是拒绝来自192.9.200.69的包。

    例子

    也许上边没有说明白,我们再来看下面的例子,每个配置后面都有简单的说明,配置文件中的“#”号后边的数字表示配置项起作用的先后顺序。

    1. 只允许192.9.200.69请求访问目录

    <Directory />
            Order deny,allow #1.默认允许全部请求
            deny from all #2.按照顺序,先判断deny规则,拒绝所有请求
           Allow from 192.9.200.69 #3.重叠,允许IP192.9.200.69的请求
    </Directory>
    
    
    1. 允许所有请求访问目录
    <Directory />
           Order deny,allow #1.默认允许全部请求
           deny from 192.9.200.69 #2按照顺序,先判断deny规则,拒绝192.9.200.69的请求
           Allow from all #3.重叠,允许所有请求
    </Directory>
    
    1. 拒绝所有请求访问目录
    <Directory />
           Order allow,deny #1.默认拒绝全部请求
           Allow from 192.9.200.69 #2.顺序,允许 192.9.200.69请求
           deny from  all#3.重叠,拒绝所有请求
    </Directory>
    
    1. 除了192.9.200.69的请求外,其他请求都可以访问目录
    <Directory />
          Order allow,deny #1.默认拒绝全部请求 
          Allow from all #2.顺序,允许所有请求
          deny from  192.9.200.69#3.重叠,拒绝192.9.200.69请求
    </Directory>
    

    Allow和Deny可以用于apache的conf文件或者.htaccess文件中(配合Directory, Location, Files等),用来控制目录和文件的访问授权。

    按照上面的解释,下面的设定是无条件禁止访问:

    Order Allow,Deny
    Deny from All
    

    如果要禁止部分内容的访问,其他的全部开放:

    Order Deny,Allow
    Deny from ip1 ip2
    或者
    Order Allow,Deny
    Allow from all
    Deny from ip1 ip2
    

    apache会按照order决定最后使用哪一条规则,比如上面的第二种方式,虽然第二句allow允许了访问,但由于在order中allow不是最后规则,因此还需要看有没有deny规则,于是到了第三句,符合ip1和ip2的访问就被禁止了。注意,order决定的“最后”规则非常重要,下面是两个错误的例子和改正方式:

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

    错误:想禁止来自domain.org的访问,但是deny不是最后规则,apache在处理到第二句allow的时候就已经匹配成功,根本就不会去看第三句。
    解决方法:Order Allow,Deny,后面两句不动,即可。

    Order Allow,Deny
    Allow from ip1
    Deny from all
    

    错误:想只允许来自ip1的访问,但是,虽然第二句中设定了allow规则,由于order中deny在后,所以会以第三句deny为准,而第三句的范围中又明显包含了ip1(all include ip1),所以所有的访问都被禁止了。

    解决方法一:直接去掉第三句。
    解决方法二:
    Order Deny,Allow
    Deny from all
    Allow from ip1
    
  • 相关阅读:
    .NetCore Grpc 客服端 工厂模式配置授权
    DOCKER 拉取 dotnet 镜像太慢 docker pull mcr.microsoft.com too slow
    Introducing .NET 5
    VSCode 出现错误 System.IO.IOException: The configured user limit (128) on the number of inotify instances has been reached.
    Omnisharp VsCode Attaching to remote processes
    zookeeper3.5.5 centos7 完全分布式 搭建随记
    Hadoop2.7.7 centos7 完全分布式 配置与问题随记
    MySQL索引 索引分类 最左前缀原则 覆盖索引 索引下推 联合索引顺序
    SQL基础随记3 范式 键
    MySQL调优 优化需要考虑哪些方面
  • 原文地址:https://www.cnblogs.com/forforever/p/13234745.html
Copyright © 2011-2022 走看看