由于產(chǎn)品的需要,最近在配置apache的負載均衡功能,但是在配置虛擬主機的訪問權限的時候我們遇到了一些問題。主要問題是deny和allow的執(zhí)行順序,抽時間研究了下這兩個參數(shù)的使用,現(xiàn)把deny和allow的使用情況總結如下。
成都創(chuàng)新互聯(lián)長期為數(shù)千家客戶提供的網(wǎng)站建設服務,團隊從業(yè)經(jīng)驗10年,關注不同地域、不同群體,并針對不同對象提供差異化的產(chǎn)品和服務;打造開放共贏平臺,與合作伙伴共同營造健康的互聯(lián)網(wǎng)生態(tài)環(huán)境。為沙縣企業(yè)提供專業(yè)的成都網(wǎng)站制作、做網(wǎng)站、外貿(mào)營銷網(wǎng)站建設,沙縣網(wǎng)站改版等技術服務。擁有10余年豐富建站經(jīng)驗和眾多成功案例,為您定制開發(fā)。一、使用情況總結
我們來看下下面的apache的一個配置,具體代碼如下:
Order allow,deny#1
Allow from all#2
deny from 192.9.200.69#3
以前使用這兩個參數(shù)的時候比較混亂,具體不太清楚到底是哪個參數(shù)在起作用。通過實驗,我們可以總結下規(guī)律,具體規(guī)律如下:
1.規(guī)律
當我們看到一個apache的配置時,可以從下面的角度來理解。一默認,二順序,三重疊。
2.上面配置說明
[1]一默認
Order allow,deny,這句話的作用是配置allow和deny的順序,默認只有最后一個關鍵字起作用,這里起作用的關鍵字就是“deny”,默認拒絕所有請求。為了便于理解,我們可以畫一個圓,圓的背景色涂上黑色,我們給這個圓起個編號,叫圓1。
[2]二順序
由于上邊的Order指出判斷的順序是先判斷allow的規(guī)則,然后才是deny的規(guī)則。所以我們要先判斷allow的請求,由于該請求中配置的是allow from all,
所以表示該請求允許所有請求。這時我們再畫一個圓,背景色涂上白色,我們給圓起個編號,叫圓2。
我們再來看deny的判斷規(guī)則,由于deny from 192.9.200.69,表示拒絕來自ip地址為“192.9.200.69”,所以我們可以畫出一塊紅色區(qū)域,表示“192.9.200.69”,我們把這塊區(qū)域叫區(qū)域3。
注意:即使把“Allow from all”寫在“deny from 192.9.200.69”下面,依然是需要先判斷allow規(guī)則,也就是說只有Order才能決定allow和order的優(yōu)先順序。
[3]三重疊
我們把上邊產(chǎn)生的圓1、圓2和區(qū)域3依次從下往上堆疊在一起。每個層都是不透明的,這時我們可以看到最終效果是除了“192.9.200.69”這塊紅色區(qū)域外,其他的所有都是白色區(qū)域。也就是只有“192.9.200.69”這個ip地址沒有權限訪問該目錄,其他的請求都有權限訪問該目錄。
二、看看下面的例子
也許上邊沒有說明白,我們再來看下面的例子,每個配置后面都有簡單的說明,配置文件中的“#”號后邊的數(shù)字表示配置項起作用的先后順序。
1.只允許192.9.200.69請求訪問目錄
Order deny,allow #1.默認允許全部請求
Allow from 192.9.200.69 #3.重疊,允許IP192.9.200.69的請求
deny from all #2.按照順序,先判斷deny規(guī)則,拒絕所有請求
2.允許所有請求訪問目錄
Order deny,allow #1.默認允許全部請求
Allow from all #3.重疊,允許所有請求
deny from 192.9.200.69 #2.按照順序,先判斷deny規(guī)則,拒絕192.9.200.69的請求
3.拒絕所有請求訪問目錄
Order allow,deny #1.默認拒絕全部請求
Allow from 192.9.200.69 #2.順序,允許192.9.200.69請求
deny fromall#3.重疊,拒絕所有請求
4.除了192.9.200.69的請求外,其他請求都可以訪問目錄
Order allow,deny #1.默認拒絕全部請求
deny from192.9.200.69#3.重疊,拒絕192.9.200.69請求
Allow from all #2.順序,允許所有請求