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

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

注意“Deny,Allow”中间只有一个逗号,也只能有一个逗号,有空格都会出错;单词的大小写不限。上面设定的含义是先设定“先检查禁止设定,没有禁止的全部允许”,而第二句没有Deny,也就是没有禁止访问的设定,直接就是允许所有访问了。这个主要是用来确保或者覆盖上级目录的设置,开放所有内容的访问权。

按照上面的解释,下面的设定是无条件禁止访问:
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

下面是测试过的例子:

Order 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不能通行


Order allow,deny
deny from all
allow from 219.204.253.8

#全部都不能通行

Order allow,deny
allow from 219.204.253.8
deny from all

#全部都不能通行

Order deny,allow
allow from 219.204.253.8
deny from all

#只允许219.204.253.8通行

Order deny,allow
deny from all
allow from 219.204.253.8

#只允许219.204.253.8通行


Order deny,allow

#全部都可以通行(默认的)

Order allow,deny

#全部都不能通行(默认的)

Order allow,deny
deny from all

#全部都不能通行

Order deny,allow
deny from all

#全部都不能通行

对于上面两种情况,如果换成allow from all,则全部都可以通行!

Order deny,allow
deny from 219.204.253.8

#只有219.204.253.8不能通行

Order allow,deny
deny from 219.204.253.8

#全部都不能通行

Order allow,deny
allow from 219.204.253.8

#只允许219.204.253.8通行

Order deny,allow
allow from 219.204.253.8

#全部都可以通行


order deny,allow
allow from 218.20.253.2
deny from 218.20

#代表拒绝218.20开头的IP,但允许218.20.253.2通过;而其它非218.20开头的IP也都允许通过。

order allow,deny
allow from 218.20.253.2
deny from 218.20

和上面的差不多,只是掉换的order语句中的allow、deny先后顺序,但最终结果表示全部都拒绝!

form:http://hi.baidu.com/enjoypain/blog/item/f48c7aecdba298d12f2e21ac.html
前段时间做了个Apache的HTTP代理服务器,其中的order allow,deny这部分弄的不太懂,于是上网找资料看,谁知道越看越糊涂,其中有些难以分辨对错甚至是误导。就像破解windows系统密码的一些文章那样,很多都是人云亦云的,并没有经过测试。废话少说,先把我经过测试后分析总结出来的结论show出来,相信这对大家的理解非常有帮助。

总则——

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

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

如果不懂的用作图软件,我们再来个非常贴近生活的比喻——

把上面的例子改动一点点,以便更好的理解:

order deny,allow

allow from 218.20.253.2

deny from 219.30

  1. 首先拿一张A4白纸,代表第order语句,意思是允许全部;

  2. 然后拿一张黑色纸剪一个圆,放在A4纸里面的某个位置上,代表deny语句,意思是拒绝所有以219.30开头的IP;

  3. 最后拿白纸再剪一个圆,放在黑色圆的旁边,代表allow语句,意思是允许218.20.253.2通过;注意,这个例子不是放进黑色圆里面了,因为deny和allow语句不再有相互包含的关系了。

  4. A4纸上面有一个黑色圆和一个白色圆,结果自然很明显了。不过白色的A4纸上再放一个白色的圆,显然是多余的了,因为大家都是白色的,都代表允许,所以就重复了,可以去掉白色的圆而不会影响判断结果。

如果看到这里还没明白,那一定是我还有什么没说清楚的。那么请好好分析我所做过的测试例子,将在最后列出来。

在这里再啰嗦一下,allow、deny语句后面跟的参数有多种形式,有不同的表达方式,我在网上看到的做法是deny from IP1 IP2 IP3或allow from domain.com等。其它的表达方式大家再找别的资料看吧。我想说的是另一种表达方式:

order deny,allow

allow from IP1 IP2

allow from domain.info

allow from 219.20.55.0/24

deny from all

我没具体验证过这是否对,不过这样是可以正常启动Apache服务的,按道理应该是正确的表达方式。哈哈,像我这样的入门者只能这样了,还希望大家多多指教!

下面是测试过的例子:

Order 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不能通行


Order allow,deny
deny from all
allow from 219.204.253.8

#全部都不能通行

Order allow,deny
allow from 219.204.253.8
deny from all

#全部都不能通行

Order deny,allow
allow from 219.204.253.8
deny from all

#只允许219.204.253.8通行

Order deny,allow
deny from all
allow from 219.204.253.8

#只允许219.204.253.8通行


Order deny,allow

#全部都可以通行(默认的)

Order allow,deny

#全部都不能通行(默认的)

Order allow,deny
deny from all

#全部都不能通行

Order deny,allow
deny from all

#全部都不能通行

对于上面两种情况,如果换成allow from all,则全部都可以通行!

Order deny,allow
deny from 219.204.253.8

#只有219.204.253.8不能通行

Order allow,deny
deny from 219.204.253.8

#全部都不能通行

Order allow,deny
allow from 219.204.253.8

#只允许219.204.253.8通行

Order deny,allow
allow from 219.204.253.8

#全部都可以通行


order deny,allow
allow from 218.20.253.2
deny from 218.20

#代表拒绝218.20开头的IP,但允许218.20.253.2通过;而其它非218.20开头的IP也都允许通过。

order allow,deny
allow from 218.20.253.2
deny from 218.20

和上面的差不多,只是掉换的order语句中的allow、deny先后顺序,但最终结果表示全部都拒绝!

转载于:https://www.cnblogs.com/weijing24/p/6108004.html

详解apache的allow和deny相关推荐

  1. 实验图文详解——apache的编译安装及httpd服务开机自启

    实验图文详解--apache的编译安装及httpd服务开机自启 1.导入安装包 2.解压安装包 3.分别解压httpd.apr.apr-util包 4.对apr.apr-util目录进行移动及重命名操 ...

  2. 零基础学习PHP编程——详解Apache、PHP和Mysql之间的关系

    详解Apache.PHP和Mysql之间的关系 注意: 本文主要写给基础薄弱的同学, 如有不当之处,还请指正. 访问源站 原创不易,转载请注明 欢迎交流: 640765823  学习方法 弄清楚Apa ...

  3. 详解Apache 2.4web服务器

    防伪码我若不勇敢谁替我坚强. 一. 安装apache2.4.23 新版本的httpd-2.4新增以下特性 新增模块 mod_proxy_fcgi(可提供fcgi代理 mod_ratelimit限制用户 ...

  4. 详解Apache下.htaccess文件常用配置

    .htaccess文件是Apache服务器中最常用的一个配置文件,它负责相关目录下的网页配置.通过htaccess文件,可以帮我们实现:网页301重定向.自定义404错误页面.改变文件扩展名.允许/阻 ...

  5. bigint hive java类型_详解Apache Hudi如何配置各种类型分区

    1. 引入 Apache Hudi支持多种分区方式数据集,如多级分区.单分区.时间日期分区.无分区数据集等,用户可根据实际需求选择合适的分区方式,下面来详细了解Hudi如何配置何种类型分区. 2. 分 ...

  6. 详解Apache下.htaccess文件的8个用法

    .htaccess文件允许我们针对特定目录及其子目录修改一些服务器设置,虽然这种类型的配置最好是在服务器本身配置文件的小节部分处理,但有时我们根本没有权限访问这个配置文件,尤其是当我们在一台共享的托管 ...

  7. 【大数据OLAP引擎】图文详解 Apache Doris 架构

    深入了解Apache Doris 一.Apache Doris介绍 Apache Doris 是一个基于 MPP 架构的高性能.实时的分析型数据库,以极速易用的特点被人们所熟知,仅需亚秒级响应时间即可 ...

  8. 【linux进阶4】apache的服务使用(图文详解apache的多种使用方式)

    apache的使用 一.apache的基本介绍 (1)Apache的作用 (2)Apache的安装和启用 (3)Apache的基本信息 (4)基本查看 二.更改访问apache默认访问 (1)Apac ...

  9. apache 虚拟主机详细配置:http.conf配置详解

    Apache的配置文件http.conf参数含义详解 Apache的配置由httpd.conf文件配置,因此下面的配置指令都是在httpd.conf文件中修改. 主站点的配置(基本配置) (1) 基本 ...

最新文章

  1. 大作文十大必背范文:五星级真题
  2. vba单元格批量赋值,EXCEL——VBA对文件夹下所有表格的特定单元格赋值
  3. 问题 C: 能被3整除吗?
  4. 查看oracle的service name
  5. 适配iOS10以及Xcode8
  6. [mybatis]Example的用法
  7. 10.数据管理(内存,文件锁)
  8. Linux 串口驱动 问题
  9. 联想微型计算机怎么开盖,联想b520一体机拆机图解
  10. QGIS空间数据分析——空间数据基本处理与计算
  11. 爬虫 第六讲 Scrapy框架
  12. 华清远见Qt作业网络聊天室1014
  13. 加拿大海派什么意思,加拿大海派时效多久?
  14. django 返回文件字节流
  15. 到Nexus私服的发包实践
  16. Android面试必问!面试字节跳动Android研发岗,满满干货指导
  17. Python编程:从入门到实践(第二版)随书敲代码 第八章 函数
  18. 淘宝店铺层级划分规则是什么?如何去玩转?
  19. 物流企业计算机网络,物流企业内部网络建设.ppt
  20. stagefright框架(四)-Video Buffer傳輸流程 .

热门文章

  1. MarkDown 编辑数学公式
  2. uniapp初始环境搭建,出于猎奇,也出于热爱编程
  3. [IOS Dev] 关于Protocols, Delegate, 和Closures
  4. FZU1019 猫捉老鼠 (BFS)
  5. 计算机运行命令如何关闭应用程序,一键关闭电脑所有程序运行!“Taskkill”命令使用教程...
  6. 尚无忧宠物托运小程序app源码前景如何?
  7. 组装我的计算机综合实践活动,利用信息技术手段开展综合实践活动的探究
  8. 【持续更新】分享100多个好用的网站及推荐理由 SMARK
  9. 调用service的executeSql方法直接 写sql语句
  10. cf服务器维修好久,cf:真懒!用了这么久evo却不知道维修,耐久度都快没了!...