關於Apache伺服器的存取控制

來源:互聯網
上載者:User

Apache的存取控制指對任何資源的任何方式的存取控制。

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

這種存取控制基於訪問者的主機名稱或者IP地址,通過使用 Deny 和 Allow 指令,實現允許或者禁止某個主機訪問我們的伺服器資源。通常 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= 文法實現,比如只允許使用Firefox瀏覽器的客戶訪問:

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

三、使用 mod_rewrite 實現存取控制

通過 mod_rewrite 指令的 [F] 標誌,可以基於任何的標準對一個資源實現存取控制。

比如,我希望早八點到晚六點的時候才能訪問任何資源,我就可以這樣:

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

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

相關文章

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.