Apache配置文件中的deny和allow的使用

因爲產品的須要,最近在配置apache的負載均衡功能,可是在配置虛擬主機的訪問權限的時候咱們遇到了一些問題。主要問題是deny和allow的執行順序,抽時間研究了下這兩個參數的使用,現把deny和allow的使用狀況總結以下。 apache

1、   使用狀況總結 負載均衡

咱們來看下下面的apache的一個配置,具體代碼以下: spa

 

<Directory "D:/TRS/Apache2.2.17/cgi-bin"> ip

    Order allow,deny  #1 ci

    Allow from all #2 產品

    deny from 192.9.200.69 #3 table

</Directory> 配置

 

之前使用這兩個參數的時候比較混亂,具體不太清楚究竟是哪一個參數在起做用。經過實驗,咱們能夠總結下規律,具體規律以下: cgi

1.  規律 權限

當咱們看到一個apache的配置時,能夠從下面的角度來理解。一默認,二順序,三重疊。

2.  上面配置說明

[1] 一默認

Order allow,deny ,這句話的做用是配置allow和deny的順序,默認只有最後一個關鍵字起做用,這裏起做用的關鍵字就是「deny」,默認拒絕全部請求。爲了便於理解,咱們能夠畫一個圓,圓的背景色塗上黑色,咱們給這個圓起個編號,叫圓1。

[2] 二順序

因爲上邊的Order指出判斷的順序是先判斷allow的規則,而後纔是deny的規則。因此咱們要先判斷allow的請求,因爲該請求中配置的是allow from all

因此表示該請求容許全部請求。這時咱們再畫一個圓,背景色塗上白色,咱們給圓起個編號,叫圓2。

咱們再來看deny的判斷規則,因爲 deny from 192.9.200.69 ,表示拒絕來自ip地址爲「192.9.200.69」,因此咱們能夠畫出一塊紅色區域,表示「192.9.200.69」,咱們把這塊區域叫區域3。

注意:即便把「Allow from all」寫在「deny from 192.9.200.69」下面,依然是須要先判斷allow規則,也就是說只有Order才能決定allow和order的優先順序。

[3] 三重疊

咱們把上邊產生的圓一、圓2和區域3依次從下往上堆疊在一塊兒。每一個層都是不透明的,這時咱們能夠看到最終效果是除了「192.9.200.69」這塊紅色區域外,其餘的全部都是白色區域。也就是隻有「192.9.200.69」這個ip地址沒有權限訪問該目錄,其餘的請求都有權限訪問該目錄。

2、   看看下面的例子

也許上邊沒有說明白,咱們再來看下面的例子,每一個配置後面都有簡單的說明,配置文件中的「#」號後邊的數字表示配置項起做用的前後順序。

1.  只容許192.9.200.69請求訪問目錄

 

<Directory "D:/TRS/Apache2.2.17/cgi-bin">

   Order deny,allow #1.默認容許所有請求

Allow from 192.9.200.69 #3.重疊,容許IP192.9.200.69的請求

deny from all #2.按照順序,先判斷deny規則,拒絕全部請求

</Directory>

 

 

2.  容許全部請求訪問目錄

 

<Directory "D:/TRS/Apache2.2.17/cgi-bin">

Order deny,allow #1.默認容許所有請求

Allow from all #3.重疊,容許全部請求

deny from 192.9.200.69 #2.按照順序,先判斷deny規則,拒絕192.9.200.69的請求

</Directory>

 

 

3.  拒絕全部請求訪問目錄

 

<Directory "D:/TRS/Apache2.2.17/cgi-bin">

Order allow,deny #1.默認拒絕所有請求

Allow from 192.9.200.69 #2.順序,容許 192.9.200.69請求

deny from  all#3.重疊,拒絕全部請求

</Directory>

 

 

4.  除了192.9.200.69的請求外,其餘請求均可以訪問目錄

 

<Directory "D:/TRS/Apache2.2.17/cgi-bin">

Order allow,deny #1.默認拒絕所有請求

deny from  192.9.200.69#3.重疊,拒絕192.9.200.69請求

Allow from all #2.順序,容許全部請求

</Directory>

相關文章
相關標籤/搜索