当前位置: 首页 > 编程笔记 >

Apache配置文件中的deny与allow小结

侯善
2023-03-14
本文向大家介绍Apache配置文件中的deny与allow小结,包括了Apache配置文件中的deny与allow小结的使用技巧和注意事项,需要的朋友参考一下

今天在公司配置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的使用实例,包括了Apache配置参数deny和allow的使用实例的使用技巧和注意事项,需要的朋友参考一下 由于产品的需要,最近在配置apache的负载均衡功能,但是在配置虚拟主机的访问权限的时候我们遇到了一些问题。主要问题是deny和allow的执行顺序,抽时间研究了下这两个参数的使用,现把deny和allow的使用情况总结如下。 一、使用

  • 我在Ubuntu 16.04服务器上使用Apache Tika应用程序作为comand line工具来提取文档内容。 [Apache Tika网站][1]上说: 构建文物 Tika构建由许多组件组成,并生成以下主要二进制文件: tika core/target/tika core-*。jar Tika核心库。包含Tika的核心接口和类,但没有任何解析器实现。只依赖于Java6。 tika-解析器/

  • 我刚刚使用来自的引用从(apachempm_prefork)切换到(apachephpfpmmod_fastcgi) 在ubuntu上从prefork MPM切换到worker MPM php fpm http://www.garron.me/en/blog/ubuntu-lamp-apache2-mpm-worker-and-php-fpm.html 以前主要的apache配置是在 vhost配

  • 我正在尝试设置Apache以使用PHP。它似乎在工作,因为我可以运行一个文件索引。php来自我的“示例”目录,该目录位于Apache中的htdocs中。但是,当我在phpinfo()屏幕上查看配置文件(php.ini)路径时,它与我在httpd中的路径不匹配。另外,我的php中打开的模块。ini文件未设置为启用。 所以我认为它没有得到我的php。伊尼。在phpinfo()屏幕上显示路径为C:\Wi

  • 我正在使用log4j的现有系统上工作,我想更新到log4j2。 有一个自定义Springbean从文件加载配置。我需要保持这种方法。我不能使用"log4j.configuration文件"系统属性。 我们有一个属性文件,其中指定了当前log4j.xml的路径(NFS共享) Springbean有以下代码。。。 } 在log4j2中,没有PropertyConfiguration。如何加载log4j

  • 问题内容: 创建配置文件(类似于.net中的Web配置),存储URL以及在应用程序部署期间可能会变化的其他常量的最佳方法是什么? 问题答案: 使用方法: 像这个例子。 然后,您可以将其注入需要常量的位置。 您可以有不同的文件来定义用于开发或生产的不同常量,然后使用Grunt之类的工具根据环境使用该文件或该文件。 假设您具有这种文件夹结构: 并以不同的值定义相同的服务。然后,您可以将适当的文件与gr