今天在公司配置Zend本地Apache环境的时候,发现在zend.conf中的权限控制中的几段句子,如下所示:

复制代码代码如下:
<Location /server-status>  
    SetHandler server-status   
    Order deny,allow   
    Deny from all   
    Allow from 127.0.0.1   
</Location>

自己在配置虚拟主机的时候需要配置VirtualHost,

复制代码代码如下:
<VirtualHost *:80>  
    ServerName backend   
    DocumentRoot "D:/Program Files/Zend/Apache2/htdocs/public"   
    SetEnv APPLICATION_ENV "development"   
    <Directory "D:/Program Files/Zend/Apache2/htdocs/public">  
        DirectoryIndex index.php   
        AllowOverride All   
        Order allow,deny   
        Allow from all   
    </Directory>  
</VirtualHost>

两段Order语句的不同引起了我的兴趣,那么到底这里的顺序是怎样执行的呢?先前联想到了“短路”的概念,有相同,也有不同,下面用几个例子来分析一下。

复制代码代码如下:
    Order deny,allow            
    –(注意deny与allow之间只有一个逗号,并且只能这样书写,其他写法都是错误的)   
    Allow from all  
    Deny from 219.204.253.8    

全部都可以通过。

复制代码代码如下:
    Order deny,allow   
    Deny from 219.204.253.8   
    Allow from all  

–全部都可以通过 。

复制代码代码如下:
Order allow,deny   
Deny from 219.204.253.8   
Allow from all

只有219.204.253.8不能通过。

复制代码代码如下:
Order allow,deny   
Allow from all  
Deny from 219.204.253.8

只有219.204.253.8不能通过 。

根据Apache官网的 解释,allow方向影响的是可以通过一个服务器区域的主机,这个主机可以通过主机名(hostname)、IP地址、IP地址范围或者通过其他的客户端 请求条件。与之相反的正是deny,deny控制的是不被服务器所允许的主机,deny的识别方式也是主机名(hostname)、IP地址及范围、或者 环境变量等。而位于顶层的Order起到的作用就是制定规则。比如上面案例1中,我们的Order为先检查deny后检查allow,那么我们可以把下面 的两句话当做一个list,这两句话没有自然的先后顺序,即检查deny时候,我们发现219.204.253.8这台主机是满足拒绝条件的,那么就进行 第二步检测,即allow的检查,发现allow做的事情是:allow from all,意思即全部来源都可以获得通过。这里的关键是,一切访客进来之后都不是一棒子打死的,都要经过两步验证,那么可以发现全部机器都是可以获得通过 的,与结果一致。

案例2中,Order顺序是先deny后allow,那么我们的步骤即在deny规则里面发现219.204.253.8是满足deny规则的,那 么进入第二步检查,发现依然是allow all,结果同样是全部允许。这里我们可以得到的结论是,Order语句之后的两个from语句的自然先后顺序是没有关系的,检查的顺序完全是按照 Order事先约定好的进行。

这样来看案例3就比较容易了,我们的Order是先allow后deny,那么deny具有最终决定权,即在allow说通过之后各个访客还需要进行拒绝检查,发现219.204.253.8这台主机是不满足的,那么进行拒绝。案例4可以用同样的方法进行分析。

Apache配置文件中的deny与allow小结的更多相关文章

  1. Apache配置文件中的deny和allow的使用

    Apache配置文件中的deny和allow的使用 由于产品的需要,最近在配置apache的负载均衡功能,但是在配置虚拟主机的访问权限的时候我们遇到了一些问题.主要问题是deny和allow的执行顺序 ...

  2. [apache] apache配置文件中的deny和allow

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

  3. apache配置文件中的项目

    对于每个配置项目,有几个要素: 首先是项目名称 其次是配置的语法 再次是配置的默认值 配置所处的配置文件的位置(分区) 配置所在的模块分区(和核心是否紧密) 配置项目所在的模块 所以对于每个配置项目, ...

  4. apache配置文件详解与优化

    apache配置文件详解与优化 一.总结 一句话总结:结合apache配置文件中的英文说明和配置详解一起看 1.apache模块配置用的什么标签? IfModule 例如: <IfModule ...

  5. Apache配置文件相关命令

    转:http://www.365mini.com/page/apache-options-directive.htm Options指令是Apache配置文件中一个比较常见也比较重要的指令,Optio ...

  6. 修改apache配置文件去除thinkphp url中的index.php

    例如你的原路径是 http://localhost/test/index.php/index/add那么现在的地址是 http://localhost/test/index/add如何去掉index. ...

  7. 修改apache配置文件去除thinkphp url中的index.php(转)

    例如你的原路径是 http://localhost/test/index.php/index/add那么现在的地址是 http://localhost/test/index/add如何去掉index. ...

  8. nginx配置文件中的location理解

    关于一些对location认识的误区 1. location 的匹配顺序是"先匹配正则,再匹配普通". 矫正: location 的匹配顺序其实是"先匹配普通,再匹配正则 ...

  9. (原创)LAMP搭建之二:apache配置文件详解(中英文对照版)

    LAMP搭建之二:apache配置文件详解(中英文对照版) # This is the main Apache server configuration file. It contains the # ...

随机推荐

  1. Excel动态生成JSON

    在最近的一个项目中,有大量的数据源来至Excel,转成JSON供前台使用.Excel数据是人工录入的,难免会有错误,所以中间会有逻辑检查.在C#中读取Excel的方式有很多,网上一搜一大堆,这里我也贴 ...

  2. HDU-3864 D_num Miller_Rabin和Pollard_rho

    题目链接:http://acm.hdu.edu.cn/showproblem.php?pid=3864 题意:给定一个数n,求n的因子只有四个的情况. Miller_Rabin和Pollard_rho ...

  3. Mongoose:Schema之路

    说明:本文在个人博客地址为edwardesire.com,欢迎前来品尝. Mongoose学习 这里的Mongoose当然不是图片上的萌物,它是一个MongoDB对象建模工具(object model ...

  4. es 的集群状态

    es的集群状态一共有三种 : green yellow red 状态是基于 碎片的 等级进行划分的 .

  5. cocos2d-x生成随机数

            //获取系统时间         //time_t是long类型,精确到秒,通过time()函数可以获得当前时间和1970年1月1日零点时间的差         time_t tt; ...

  6. 2015年必火的五个Html5移动开发工具推荐

    NO.1   DCloudHBuilder:基于HTML5开发工具 中文官网:http://www.dcloud.io/ DCloudHBuilder:基于HTML5开发工具是当前最快的HTML开发工 ...

  7. 439. Segment Tree Build II

    最后更新 08-Jan-2017 开始介绍线段树的主要作用了,可以快速在区间查找极值,我猜是这样的..... 一个NODE的最大值取决于它左边和右边最大值里大 按个,所以,所以什么?对了,我们该用po ...

  8. 利用 SQL Monitor 查看语句运行状态步骤

    利用 SQL Monitor 查看语句运行状态步骤 1.确定语句被 SQL Monitor 监控 SQL> SELECT * FROM GV$SQL_MONITOR WHERE sql_id=' ...

  9. Vue2.0表单校验组件vee-validate的使用

    vee-validate使用教程 *本文适合有一定Vue2.0基础的同学参考,根据项目的实际情况来使用,关于Vue的使用不做多余解释.本人也是一边学习一边使用,如果错误之处敬请批评指出* 一.安装 n ...

  10. SQL创建linkserver

    建立链接服务器并创建同义词,有一个最大的好处,就是可以跨数据库实例进行操作数据库,可以在一个数据库连接内完成数据操作,方便做事务查询.     在SQL SERVER 2008里,可以按以下的方式建立 ...