1. 程式人生 > >關於Apacheserver的訪問控制

關於Apacheserver的訪問控制

str rec pac 返回 cond 指令 們的 定義 write

Apache的訪問控制指對不論什麽資源的不論什麽方式的訪問控制。

一、基於主機或者IP地址的控制

這樣的訪問控制基於訪問者的主機名或者IP地址,通過使用 Deny 和 Allow 指令。實現同意或者禁止某個主機訪問我們的server資源。通常 Order 指令也會一起使用。來定義 Deny 和 Allows 指令起作用的順序。假設不使用 Order 指令,默認的順序為 Deny, Allow, 就相當於 Order Deny,Allow。

Order 指令和 Allow。Deny 指令配合使用。實現了一個三步控制系統。

第一步:依據Order的順序。將順序在前的全部的Allow指令或者Deny指令應用於當前請求;也就是說假設是 Order allow,deny 。那麽第一步就是將全部的Allow指令應用於當前訪問。假設有匹配。那麽就同意該訪問;假設沒有匹配到一條Allow指令,那麽就禁止其訪問。

第二步:將剩下的另外一個指令的全部語句跟當前請求匹配。假設有匹配就運行對應的訪問控制。

第三步:假設當前請求沒有在前兩步匹配到不論什麽指令,就運行 Order 指令中後面的那個指令。

以下,通過一個樣例理解一下:

使指定文件夾下的資源僅僅讓本地訪問

    <Directory "/server">
        Order allow,deny
        Allow from 127.0.0.1
    </Directory>
第一步: 本地的訪問匹配了 Allow from 127.0.0.1 這條指令,所以被同意;其它的主機沒有匹配到不論什麽一條Allow指令,所以被禁止訪問。

第二步:全部訪問都沒有匹配到 Deny 指令;

第三步:沒有匹配到不論什麽指令的訪問,也就是不是本地的訪問,依照 Order 指令,運行後面的 deny 的指令,所以被禁止訪問;

二、依據環境變量的訪問控制

這樣的方式能夠通過 Allow from env= 或者 Deny from env= 語法實現。比方僅僅同意使用火狐瀏覽器的客戶訪問:

    <Directory "/server">
        SetEnvIf User-Agent "Firefox" ff=1
        Order allow,deny
        Allow from env=ff
    </Directory>

三、使用 mod_rewrite 實現訪問控制

通過 mod_rewrite 指令的 [F] 標誌,能夠基於不論什麽的標準對一個資源實現訪問控制。

比方,我希望早八點到晚六點的時候才幹訪問不論什麽資源,我就能夠這樣:

RewriteEngine On
RewriteCond %{TIME_HOUR} >20 [OR]
RewriteCond %{TIME_HOUR} <07
RewriteRule ^/fridge - [F] 

這種話。晚上八點以後到早上7點,都會返回 403

關於Apacheserver的訪問控制