• Order Allow Deny语句配置实战

    黑名单与白名单写法
    服务器君一共花费 22.300 ms 进行了 4 次数据库查询,努力地为您提供了这个页面。
    广告很萌的

    前面小节《Apache里的Order Allow Deny》谈到了Allow Deny大致的使用,那么这里我们来实战下吧。

    对于新手来说,Apache 配置文件的可读性确实差了点,在不看文档的情况下很多都不知所云。Order、Allow、Deny 就是典型的例子。

    如果配置文件中这样写,你会认为是什么意思?

    Order Allow,Deny
    Allow from 1.2.3.4
    Deny from all
    

    不注意的话,很可能会被看成“除 IP 为 1.2.3.4 的用户外,拒绝其他用户访问”。OK,恭喜你答错了。

    • 因为 Order Allow,Deny 的含义为先处理 Allow,再处理 Deny。这样一来,Deny 项的优先级被提高,并且未匹配 Allow 的情况会默认以 Deny 处理。最后,Deny from all 覆盖了 Allow from 1.2.3.4,造成所有用户被拒绝访问。

    要更正这个问题,只要去掉最后一行就行了:

    Order Allow,Deny
    Allow from 1.2.3.4
    

    先处理 Allow from 1.2.3.4,然后,没有匹配的用户统统 Deny。

    一般来说,如果你需要一个白名单,就用 Order Allow,Deny;如果是黑名单,就用 Order Deny,Allow。

    按照这个原则,我们再看更多的例子。

    实战

    下面是白名单写法。以deny为最后标准,有隐含的拒绝所有语句存在。

    例子1:

    order allow,deny
    allow from 192.168.0.10
    

    该例子最后的结果为:只允许192.168.0.10,拒绝其他所有ip访问。

    例子2:

    order allow,deny
    deny from 192.168.0.10
    

    该例子最后的结果为:拒绝所有的ip访问,该条件其实是多余的,因为隐含的拒绝所有。

    例子3:

    order allow,deny
    deny from 192.168.0.10
    allow from 192.168.0.9
    

    该例子最后的结果为:只允许192.168.0.9 ip的访问。deny from 是多余的条件。

    例子4:

    order allow,deny
    deny from 192.168.0.10
    allow from 192.168.0.10
    

    该例子的最后结果为:只允许192.168.0.10 ip 的访问。

    下面是黑名单写法。以allow为最后标准,有隐含的允许所有语句存在。

    例子5:

    order deny,allow
    deny from 192.168.0.10
    

    该例子的最后结果为:只拒绝192.168.0.10 ip 的访问。允许其他的ip地址,因为有隐含的允许所有语句。

    例子6:

    order deny,allow
    allow from 192.168.0.10
    

    该例子的最后结果为:允许所有ip 的访问。allow from 条件是多余的,因为隐含的允许所有语句。

    例子7:

    order deny,allow
    deny from 192.168.0.10
    allow from 192.168.0.10
    

    该例子的最后结果为:只拒绝192.168.0.10 ip 的访问。

    差不多能理解了吧。

更多 推荐条目

Welcome to NowaMagic Academy!

现代魔法 推荐于 2013-02-27 10:23   

本章最新发布
随机专题
  1. [C语言程序设计] C语言里的全局变量 2 个条目
  2. [移动开发] Content Provider内容提供者 3 个条目
  3. [移动开发] ListView 使用相关问题集 1 个条目
  4. [Python程序设计] Django架构流程分析 7 个条目
  5. [移动开发] Activity 初步知识 2 个条目
  6. [移动开发] Android里的ContentValues 2 个条目
  7. [移动开发] Android属性系统Property 9 个条目
  8. [PHP程序设计] httpd.conf设置相关 3 个条目
  9. [Python程序设计] Python语言概述 6 个条目
  10. [PHP程序设计] PHP与Stream流 5 个条目
  11. [智力开发与知识管理] 整体性学习步骤 9 个条目
  12. [Python程序设计] Tornado表单处理 3 个条目
窗口 -- [资讯]