Apache配置参数deny和allow的使用实例_Linux

由于产品的需要,最近在配置apache的负载均衡功能,但是在配置虚拟主机的访问权限的时候我们遇到了一些问题。主要问题是deny和allow的执行顺序,抽时间研究了下这两个参数的使用,现把deny和allow的使用情况总结如下。

一、使用情况总结

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

复制代码 代码如下:

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

以前使用这两个参数的时候比较混乱,具体不太清楚到底是哪个参数在起作用。通过实验,我们可以总结下规律,具体规律如下:

1.  规律

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

2.  上面配置说明

[1] 一默认
Order allow,deny ,这句话的作用是配置allow和deny的顺序,默认只有最后一个关键字起作用,这里起作用的关键字就是“deny”,默认拒绝所有请求。为了便于理解,我们可以画一个圆,圆的背景色涂上黑色,我们给这个圆起个编号,叫圆1。
[2] 二顺序
由于上边的Order指出判断的顺序是先判断allow的规则,然后才是deny的规则。所以我们要先判断allow的请求,由于该请求中配置的是allow from all,
所以表示该请求允许所有请求。这时我们再画一个圆,背景色涂上白色,我们给圆起个编号,叫圆2。
我们再来看deny的判断规则,由于 deny from 192.9.200.69 ,表示拒绝来自ip地址为“192.9.200.69”,所以我们可以画出一块红色区域,表示“192.9.200.69”,我们把这块区域叫区域3。
注意:即使把“Allow from all”写在“deny from 192.9.200.69”下面,依然是需要先判断allow规则,也就是说只有Order才能决定allow和order的优先顺序。

[3] 三重叠

我们把上边产生的圆1、圆2和区域3依次从下往上堆叠在一起。每个层都是不透明的,这时我们可以看到最终效果是除了“192.9.200.69”这块红色区域外,其他的所有都是白色区域。也就是只有“192.9.200.69”这个ip地址没有权限访问该目录,其他的请求都有权限访问该目录。

二、看看下面的例子

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

2.  允许所有请求访问目录

复制代码 代码如下:

<Directory />
       Order deny,allow #1.默认允许全部请求
       deny from 192.9.200.69 #2.按照顺序,先判断deny规则,拒绝192.9.200.69的请求
       Allow from all #3.重叠,允许所有请求
</Directory>

3.  拒绝所有请求访问目录

复制代码 代码如下:

<Directory />
       Order allow,deny #1.默认拒绝全部请求
       Allow from 192.9.200.69 #2.顺序,允许 192.9.200.69请求
       deny from  all#3.重叠,拒绝所有请求
</Directory>

4.  除了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 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

时间: 2024-12-31 19:36:48

Apache配置参数deny和allow的使用实例_Linux的相关文章

Apache配置参数deny和allow的使用实例

  这篇文章主要介绍了Apache配置参数deny和allow的使用实例,需要的朋友可以参考下 由于产品的需要,最近在配置apache的负载均衡功能,但是在配置虚拟主机的访问权限的时候我们遇到了一些问题.主要问题是deny和allow的执行顺序,抽时间研究了下这两个参数的使用,现把deny和allow的使用情况总结如下. 一.使用情况总结 我们来看下下面的apache的一个配置,具体代码如下: 代码如下: Order allow,deny #1 Allow from all #2 deny fr

Nginx+Apache配置环境提高服务器负载

之前流行过一段时间的Nginx+以fastCGI方式运行的PHP来搭建Web站点的方法.但是经过一段时间考量之后,大家经常发现会出现一些502的错误.其实一般是Nginx+fastCGIPHP的形式不太稳定造成.于是尝试了牛人推荐的一种是用Nginx做前端转发PHP请求给Apache的方法来进行服务器平台建设.这种方法有效的避免了Apache在应付大并发时候的些许不足和Nginx配合fastCGIPHP不太稳定的弊端.同时又在一定程度上利用了Nginx速度上的优势.说白了就是一些静态文件有Ngi

网站图像防盗----Apache配置妙法

apache 每个网站所有者都在尽力美化自己的网站,使它看上去更酷.更具有吸引力,其中最常见的方法就是使用图片.Logo及Flash等.但是,这也会带来一个问题,因为越漂亮.越吸引人的网站,漂亮的图片和Flash等就容易被别的网站悄悄的盗用.下面我们就一起讨论如何防止网站图像被盗用.     需要解决的问题     简单的说,这里有两种不同的盗用行为:    1. 使用HTML标记IMG在自己的网站中引用网站的图片.    2. 从网站上下载图片,然后放在自己的网站上.     对于第一种的盗用

Hadoop-2.8.0集群搭建、hadoop源码编译和安装、host配置、ssh免密登录、hadoop配置文件中的参数配置参数总结、hadoop集群测试,安装过程中的常见错误

25.集群搭建 25.1 HADOOP集群搭建 25.1.1集群简介 HADOOP集群具体来说包含两个集群:HDFS集群和YARN集群,两者逻辑上分离,但物理上常在一起 HDFS集群: 负责海量数据的存储,集群中的角色主要有NameNode / DataNode YARN集群: 负责海量数据运算时的资源调度,集群中的角色主要有 ResourceManager /NodeManager 25.1.2服务器准备 本案例使用虚拟机服务器来搭建HADOOP集群,所用软件及版本: ü Vmware 11.

分享三种Apache配置虚拟主机的方式_Linux

一.基于IP  1. 假设服务器有个IP地址为192.168.1.10,使用ifconfig在同一个网络接口eth0上绑定3个IP: [root@localhost root]# ifconfig eth0:1 192.168.1.11 [root@localhost root]# ifconfig eth0:2 192.168.1.12 [root@localhost root]# ifconfig eth0:3 192.168.1.13  2. 修改hosts文件,添加三个域名与之一一对应:

Spark配置参数

以下是整理的Spark中的一些配置参数,官方文档请参考Spark Configuration. Spark提供三个位置用来配置系统: Spark属性:控制大部分的应用程序参数,可以用SparkConf对象或者Java系统属性设置 环境变量:可以通过每个节点的 conf/spark-env.sh脚本设置.例如IP地址.端口等信息 日志配置:可以通过log4j.properties配置 Spark属性 Spark属性控制大部分的应用程序设置,并且为每个应用程序分别配置它.这些属性可以直接在Spark

通过Apache配置Rewrite实现网络服务的co-branding

本文讨论了如何利用 Apache 的 rewrite module,重写 URL 将 branding 信息变成 JSP 页面请求的参数,再通过 JSP 对于 session 对象的操作来保存和提取用户的 brand 信息,最后显示自定义的 UI 的技术方案来实现网络托管服务中的 co-branding 用户需求.阅读本文需要对 Apache 和 JSP 有一定的初步了解. 什么是 co-branding 时下,很多网站以网络服务的方式为企业用户提供"托管"服务(Hosting),典型

Hadoop YARN配置参数剖析(4)—Fair Scheduler相关参数

首先在yarn-site.xml中,将配置参数yarn.resourcemanager.scheduler.class设置为org.apache.hadoop.yarn.server.resourcemanager.scheduler.fair.FairScheduler. Fair Scheduler的配置选项包括两部分,其中一部分在yarn-site.xml中,主要用于配置调度器级别的参数,另外一部分在一个自定义配置文件(默认是fair-scheduler.xml)中,主要用于配置各个队列的

Hadoop YARN配置参数剖析(1)—RM与NM相关参数

注意,配置这些参数前,应充分理解这几个参数的含义,以防止误配给集群带来的隐患.另外,这些参数均需要在yarn-site.xml中配置. 1.    ResourceManager相关配置参数 (1) yarn.resourcemanager.address 参数解释:ResourceManager 对客户端暴露的地址.客户端通过该地址向RM提交应用程序,杀死应用程序等. 默认值:${yarn.resourcemanager.hostname}:8032 (2) yarn.resourcemana