转自 http://www.cnblogs.com/top5/archive/2009/09/22/1571709.html

影响最终判断结果的只有两点:

1. order语句中allow、deny的先后顺序;

2. allow、deny语句中各自包含的范围。

温馨提醒——

1. 修改完配置后要保存好并重启Apache服务,配置才能生效;

2. 开头字母不分大小写;

3. allow、deny语句不分先后顺序,谁先谁后不影响最终判断结果;但都会被判断到;

4. order语句中,“allow,deny”之间“有且只有”一个逗号(英文格式的),而且先后顺序很重要;

5. Apache有一条缺省规则,“order allow,deny”本身就默认了拒绝所有的意思,因为deny在allow的后面;同理,“order deny,allow”本身默认的是允许所有;当然,最终判断结果还要综合下面的allow、deny语句中各自所包含的范围;(也就是说order语句后面可以没有allow、deny语句)

6. allow、deny语句中,第二个单词一定是“from”,否则Apache会因错而无法启动,

7. “order allow,deny”代表先判断allow语句再判断deny语句,反之亦然。

上面说的都是要记住的,而下面说的是我独创的理解方法。如果有人看了而没有豁然开朗的感觉,那算是我的失败!

判断原则分4步走——

1. 首先判断默认的;

2. 然后判断逗号前的;

3. 最后判断逗号后的;

4. 最终按顺序叠加而得出判断结果。

上面三点我说的简单而形象,主要是为了便于记忆。暂时不理解不要紧,继续看下面详细的解说自然会明白。下面以一个普通例子来做解释——

order deny,allow

allow from 218.20.253.2

deny from 218.20

1. 所谓“首先判断默认的”,就是判断“order deny,allow”这句,它默认是允许所有;

2. 所谓“然后判断逗号前的”,因为在本例子中的order语句里面,deny在逗号的前面,所以现在轮到判断下面的deny语句了——“deny from 218.20”;

3. 所谓“最后判断逗号后的”,因为在本例子中的order语句里面,allow在逗号的后面,所以最后轮到判断下面的allow语句了——“allow from 218.20.253.2”。

4. 所谓“最终按顺序叠加而得出判断结果”,这是一个形象化了的说法,我把每一步判断都看作一个“不透明的图层”,然后一步步按顺序叠加上去,最终得出的“图像”就是判断结果。

用过作图软件的人应该都知道“图层”是怎么回事,我估计Apache关于order allow deny这方面的设计理念和photoshop等作图软件关于图层的设计理念是一样的。即“游戏规则”是一样的。

那么上面的例子就可以是这么一个步骤和图像——

1. 先画一个白色的大圆,代表“order deny,allow”语句,默认意思是允许所有;

2. 然后画一个小一点的黑色圆,代表“deny from 218.20”语句,意思是拒绝所有以218.20开头的IP,放进白色的大圆里面;

3. 最后再画一个白色的圆,代表“allow from 218.20.253.2”语句,意思是允许218.20.253.2通过,放在黑色圆的上面。

4. 到此为止,我们已经可以看到一个结果了,白色大圆上面有一个黑色圆,黑色圆上面还有一个白色圆。最后,我们所能看到的黑色部分就是拒绝通行的,剩下的白色部分都是允许通行的。判断的结果就是这么简单形象!

apache allow和deny的更多相关文章

  1. apache (order allow,deny or deny,allow)

    平台:"rhel6.2" 实验内容: "测试apache‘order allow,deny’ or ‘order deny,allow’ 功能" 配置文件:&q ...

  2. 详解apache的allow和deny

    今天看了一篇关于apache allow,deny的文章收获匪浅,防止被删,我直接摘过来了,原文地址!!! !http://www.cnblogs.com/top5/archive/2009/09/2 ...

  3. Apache服务器配置技巧

    1.如何设置请求等待时间 在httpd.conf里面设置: TimeOut n 其中n为整数,单位是秒. 设置这个TimeOut适用于三种情况: 2.如何接收一个get请求的总时间 接收一个post和 ...

  4. php,apache伪静态(1转)

    1.检测Apache是否支持mod_rewrite通过php提供的phpinfo()函数查看环境配置,通过Ctrl+F查找到“Loaded Modules”,其中列出了所有apache2handler ...

  5. 分类: LINUX apache 访问设置配置

    分类: LINUX 在一次面试的时候被问到apache访问控制的问题.由于以前对apache的访问控制都是通过iptalbes来实现的,没有实际在apache上操作过访问控制.所以只知道个大概: 在主 ...

  6. Apache服务器运维笔记(6)----目录 文件 网络容器的安全问题

    <Directory>.<Files>.<Location> 这三个容器的作用都很相似,都是以容器的形式来封装一组指令对访问进行控制,只是它们的区别在于作用于目录. ...

  7. Apache服务器运维笔记(3)----容器部分

    1.<IfModule>容器 <IfModule>容器作用于模块,它会首先判断模块是否载入,然后再决定是否进行处理,也就是说只有当判断结果为真时才会执行容器内的指令,相反如果为 ...

  8. Apache 访问控制

    Apache访问控制 通过设置访问控制,可对网站进行权限管理,提高安全性. 参数介绍 <Directory />: 行为对根目录的限制 Options:允许使用控制目录特征的指令.他们包括 ...

  9. Apache开启PHP的伪静态模式

    首先,什么是伪静态: 伪静态又名URL重写,是动态的网址看起来像静态的网址.换句话说就是,动态网页通过重写 URL 方法实现去掉动态网页的参数,但在实际的网页目录中并没有必要实现存在重写的页面. 1. ...

随机推荐

  1. MongoDB命令模式下的条件过滤总结

    db.tb1.find() //查询全部,用it查看下一页.db.tb1.find({"age":1}) //查询年龄==1的记录db.tb1.find({},{"age ...

  2. [IT扫盲]软件测试时期版本的称呼

    有时候搞不懂,还没发布时的软件怎么会就有那么多版本,今天彻底想了解一下. 早有人写好了. 请参考这里: http://baike.baidu.com/view/707808.htm#1_2 测试版 α ...

  3. PHP 二维数组根据相同的值进行合并

    例如有一个二维数组 $arr: $arr = array( array( 'review_id' =>102 , 'url'=>'a.jpg', ), array( 'review_id' ...

  4. jQuery Ajax 确定 form 表单 submit 提交成功

    使用 jQuery 提交表单,可以使用 同步方式(async: false). a.html 是 html 文件,a.php 是服务端文件,把 a.html 中表单的数据提交到 a.php 中,在提交 ...

  5. PHP-FPM + Nginx: 502错误

    /etc/php5/fpm/pool.d/www.conf 里面找到这样一段代码: listen = 127.0.0.1:9000 在这上面代码的下面添加一行: listen = /var/run/p ...

  6. 图片放大插件——elevatezoom

    GitHub地址:https://github.com/elevateweb/elevatezoom elevatezoom官网:http://www.elevateweb.co.uk/image-z ...

  7. PHP数组常用函数分类整理

    一.数组操作的基本函数数组的键名和值array_values($arr);  获得数组的值array_keys($arr);  获得数组的键名array_flip($arr);  数组中的值与键名互换 ...

  8. 验证码 mewebstudio/captcha

    composer require mews/captcha https://github.com/mewebstudio/captcha

  9. reduce()

    Professional.JavaScript.for.Web.Developers.3rd.Edition.Jan.2012 var value = [1,2,3,4,5]; var sum = v ...

  10. Grid组件 列头居中

    在grdMain组件中的 class中设置“ x-grid-title-center ”