您好,登錄后才能下訂單哦!
如何理解Apache配置文件中的deny與allow,相信很多沒有經驗的人對此束手無策,為此本文總結了問題出現的原因和解決方法,通過這篇文章希望你能解決這個問題。
Apache配置文件中的deny與allow小結,本文著重講解了deny和allow的執行順序問題,需要的朋友可以參考下
今天在公司配置Zend本地Apache環境的時候,發現在zend.conf中的權限控制中的幾段句子,如下所示:
代碼如下:
<Location /server-status>
SetHandler server-status
Order deny,allow
Deny from all
Allow from 127.0.0.1
</Location>
自己在配置虛擬主機的時候需要配置VirtualHost,
代碼如下:
<VirtualHost *:80>
ServerName backend
DocumentRoot "D:/Program Files/Zend/Apache2/htdocs/public"
SetEnv APPLICATION_ENV "development"
<Directory "D:/Program Files/Zend/Apache2/htdocs/public">
DirectoryIndex index.php
AllowOverride All
Order allow,deny
Allow from all
</Directory>
</VirtualHost>
兩段Order語句的不同引起了我的興趣,那么到底這里的順序是怎樣執行的呢?先前聯想到了“短路”的概念,有相同,也有不同,下面用幾個例子來分析一下。
代碼如下:
Order deny,allow
–(注意deny與allow之間只有一個逗號,并且只能這樣書寫,其他寫法都是錯誤的)
Allow from all
Deny from 219.204.253.8
全部都可以通過。
代碼如下:
Order deny,allow
Deny from 219.204.253.8
Allow from all
–全部都可以通過 。
代碼如下:
Order allow,deny
Deny from 219.204.253.8
Allow from all
只有219.204.253.8不能通過。
代碼如下:
Order allow,deny
Allow from all
Deny from 219.204.253.8
只有219.204.253.8不能通過 。
根據Apache官網的 解釋,allow方向影響的是可以通過一個服務器區域的主機,這個主機可以通過主機名(hostname)、IP地址、IP地址范圍或者通過其他的客戶端 請求條件。與之相反的正是deny,deny控制的是不被服務器所允許的主機,deny的識別方式也是主機名(hostname)、http://www.bbqmw.net/qm_bbqmbd/IP地址及范圍、或者 環境變量等。而位于頂層的Order起到的作用就是制定規則。比如上面案例1中,我們的Order為先檢查deny后檢查allow,那么我們可以把下面 的兩句話當做一個list,這兩句話沒有自然的先后順序,即檢查deny時候,我們發現219.204.253.8這臺主機是滿足拒絕條件的,那么就進行 第二步檢測,即allow的檢查,發現allow做的事情是:allow from all,意思即全部來源都可以獲得通過。這里的關鍵是,一切訪客進來之后都不是一棒子打死的,都要經過兩步驗證,那么可以發現全部機器都是可以獲得通過 的,與結果一致。
看完上述內容,你們掌握如何理解Apache配置文件中的deny與allow的方法了嗎?如果還想學到更多技能或想了解更多相關內容,歡迎關注億速云行業資訊頻道,感謝各位的閱讀!
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。