• Order Allow Deny语句配置实战

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

    前面小节《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. [Python程序设计] Python Web部署的背景知识 9 个条目
  2. [软件工程与项目管理] 浏览器初步介绍 8 个条目
  3. [移动开发] Android里的ContentValues 2 个条目
  4. [PHP程序设计] 命令式编程范式 6 个条目
  5. [C语言程序设计] C语言里的全局变量 2 个条目
  6. [数据库技术] 无限级分类数据表设计 4 个条目
  7. [Python程序设计] 写几个简单的Tornado程序吧 5 个条目
  8. [移动开发] Android抽屉导航NavigationDrawer 5 个条目
  9. [PHP程序设计] htaccess 设置技巧 6 个条目
  10. [软件工程与项目管理] 开始使用Git 3 个条目
  11. [移动开发] Android View注入框架Butter Knife 3 个条目
  12. [智力开发与知识管理] 超越整体性学习 5 个条目
窗口 -- [博客]