Apache中禁止IP段,在httpd.conf中的寫法

日期:2008-07-02  作者:喜騰小二  來源:PHPChina


幫助: 控制哪些主機能夠訪問伺服器的一個區網域
語法: Allow from all|host|env=env-variable [host|env=env-variable] ...
上下文: 目錄, .htaccess
覆蓋項: Limit
狀態: Base
模組: mod_access
Allow指令影響哪些主機可以訪問伺服器的一個區網域。可以用主機名、IP地址、 IP地址範圍或者其他環境變數中擷取的用戶端請求特性來對訪問進行控制。

這個指令的第一個參數總是from。隨後的參數可以有三種不同形式。 如果指定Allow from all,則允許所有主機訪問,需要 Deny和Order指令像下麵討論的那樣配置。 要隻允許特定一部分主機或主機群訪問伺服器,host可以用下麵任何一種格式來指定:

一個網域名稱(部分)
例子:Allow from apache.org
允許名字與給定字串比對或者以該字串結尾的主機訪問。隻有完整的名字組成部分才被比對,因此上述例子將比對foo.apache.org而不能比對fooapache.org。這樣的配置將引起伺服器執行一個對客戶IP地址的反查網域名稱操作而不管HostnameLookups指令是否設定
完整的IP地址
例子:Allow from 10.1.2.3
允許一個主機的一個IP地址訪問。
部分IP地址
例子:Allow from 10.1
IP地址的開始1到3位元組,用於子網限制。
網路/遮罩對
例子:Allow from 10.1.0.0/255.255.0.0
一個網路a.b.c.d,和一個遮罩w.x.y.z。用於更精確的子網限制。
網路/nnn 無內別域間路由規格
例子:Allow from 10.1.0.0/16
同前一種情況相似,除了遮罩由nnn個高位位元組構成。
注意以上後三個例子完全比對同一組主機。

IPv6地址和IPv6子網可以像下麵這樣指定:
Allow from fe80::a00:20ff:fea7:ccea
Allow from fe80::a00:20ff:fea7:ccea/10
Allow指令的第三種參數格式允許對伺服器的訪問由 環境變數的一個延伸指定。指定 Allow from env=env-variable時,如果環境變數env-variable存在則訪問請求被允許。使用由mod_setenvif提供的指令,伺服器用一種基於用戶端請求的彈性方式提供了設定環境變數的能力。因此,這條指令可以用於允許基於像User-Agent(浏覽器類型)、Referer或者其他Http請求頭欄位 的訪問。
例子:
SetEnvIf User-Agent ^KnockKnock/2.0 let_me_in

Order Deny,Allow
Deny from all
Allow from env=let_me_in
這種情況下,發送以KnockKnock/2.0開頭的使用者代理標示的浏覽器將被允許訪問,而所有其他浏覽器將被禁止訪問。

Deny 指令
幫助: 控制哪些主機被禁止訪問伺服器
語法: Deny from all|host|env=env-variable [host|env=env-variable] ...
上下文: 目錄, .htaccess
覆蓋項: Limit
狀態: Base
模組: mod_access
這條指令允許基於主機名、IP地址或者環境變數限制對伺服器的訪問。 Deny指令的參數設定和Allow指令完全相同。

Order 指令
幫助: 控制預設的訪問狀態和Allow與Deny指令被評估的順序。
語法: Order ordering
預設值: Order Deny,Allow
上下文: 目錄, .htaccess
覆蓋項: Limit
狀態: Base
模組: mod_access

Order指令控制預設的訪問狀態和 Allow與Deny指令被評估的順序。 Ordering是以下幾種範例之一:
Deny,Allow
Deny指令在 Allow指令之前被評估。預設允許所有訪問。 任何不比對Deny指令或者比對 Allow指令的客戶都被允許訪問伺服器。
Allow,Deny
Allow指令在 Deny指令之前被評估。預設禁止所有訪問。 任何不比對Allow指令或者比對 Deny指令的客戶都將被禁止訪問伺服器。
Mutual-failure
隻有出現在Allow清單並且不出現在 Deny清單中的主機才被允許訪問。 這種順序與Order Allow,Deny俱有同樣效果,不贊成使用,它包括了哪一種配置。
關鍵字隻能用逗號分隔;它們之間不能有空格。注意在所有情況下每個Allow和Deny指令陳述式都將被評估。
在下麵的例子中,apache.org域中所有主機都允許訪問,而其他任何主機訪問都被拒絕。
Order Deny,Allow
Deny from all
Allow from apache.org
下麵例子中,apache.org域中所有主機,除了foo.apache.org子域包含的主機被拒絕訪問以外,都允許訪問。 而所有不在apache.org域中的主機都不允許訪問,因為預設狀態是拒絕對伺服器的訪問。

Order Allow,Deny
Allow from apache.org
Deny from foo.apache.org

另一方麵,如果上個例子中的Order指令改變為Deny,Allow,將允許所有主機的訪問。這是因為,不管配置檔案中指令的實際順序如何, Allow from apache.org指令會最後被評估到並覆蓋之前的 Deny from foo.apache.org。所有不在apache.org 域中的主機也允許訪問是因為預設狀態被改變到了允許。

即使沒有伴隨Allow和Deny指令,一個Order 指令的存在也會影響到伺服器上某一個部分的訪問, 這是由於他對預設訪問狀態的影響。例如,

Order Allow,Deny
這樣將會禁止所有對/www目錄的訪問,因為預設狀態將被設定為拒絕.
Order指令隻在伺服器配置的每個段內部控制訪問指令的處理。 這暗示着,例如,一個在段出現的 Allow或者Deny指令總是將會在一個段或者 .htaccess檔案中出現的 Allow或Deny 指令之後被評估,而不管Order指令中的設定為何。要瞭解配置段落合併的詳細資訊, 參看How Directory, Location and Files sections work相關文檔。

<<<返回技術中心

技術文章

站內新聞

我要啦免费统计