Apache配置文件httpd.conf/htaccess中deny和allow的使用

简介: 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


相关文章
|
关系型数据库 MySQL 应用服务中间件
Centos中查看nginx、apache、php、mysql配置文件路径
Centos中查看nginx、apache、php、mysql配置文件路径
2386 0
|
应用服务中间件 Apache
轻量应用服务器如何通过修改apache配置文件实现非https的访问多域名到不同子目录程序?
轻量应用服务器如何通过修改apache配置文件实现非https的访问多域名到不同子目录程序?
158 0
|
分布式计算 关系型数据库 MySQL
Apache Oozie -安装部署-配置文件修改 &amp; 数据库、war 包初始化|学习笔记
快速学习 Apache Oozie -安装部署-配置文件修改 &amp; 数据库、war 包初始化
Apache Oozie -安装部署-配置文件修改 &amp; 数据库、war 包初始化|学习笔记
|
Apache Windows
Apache下htaccess文件不起作用/rewrite 没有效果
Apache下htaccess文件不起作用/rewrite 没有效果
337 0
|
Apache
apache配置文件解析(httpd.conf)
apache配置文件解析(httpd.conf)
597 0
|
JavaScript Apache PHP
Apache的.htaccess利用技巧
Apache的.htaccess利用技巧
255 0
|
Apache
apache 设置.htaccess 禁止ip访问
网站遭受攻击,拦截ip访问
305 0
|
域名解析 Apache 数据安全/隐私保护
|
8天前
|
存储 人工智能 大数据
The Past, Present and Future of Apache Flink
本文整理自阿里云开源大数据负责人王峰(莫问)在 Flink Forward Asia 2024 上海站主论坛开场的分享,今年正值 Flink 开源项目诞生的第 10 周年,借此时机,王峰回顾了 Flink 在过去 10 年的发展历程以及 Flink社区当前最新的技术成果,最后展望下一个十年 Flink 路向何方。
275 33
The Past, Present and Future of Apache Flink

推荐镜像

更多
下一篇
DataWorks