Apache伺服器配置全攻略_伺服器
最後更新:2017-01-18
來源:互聯網
上載者:User
個設定檔控制著伺服器的各個方面的特性,因此為了正常運行伺服器便需要設定好這三個檔案。
除了這三個設定檔案之外,Apache還使用mime.types檔案用於標識不同檔案
對應的MIME類型, magic檔案設定不同MIME類型檔案的一些特殊標識,使得Apache 伺服器從文檔尾碼不能判斷出檔案的MIME 類型時,能通過檔案內容中的這些特殊標記來判斷文檔的MIME類型。
bash-2.02$ ls -l /usr/local/apache/conf
total 100
-rw-r--r-- 1 root wheel 348 Apr 16 16:01 access.conf
-rw-r--r-- 1 root wheel 348 Feb 13 13:33 access.conf.default
-rw-r--r-- 1 root wheel 30331 May 26 08:55 httpd.conf
-rw-r--r-- 1 root wheel 29953 Feb 13 13:33 httpd.conf.default
-rw-r--r-- 1 root wheel 12441 Apr 19 15:42 magic
-rw-r--r-- 1 root wheel 12441 Feb 13 13:33 magic.default
-rw-r--r-- 1 root wheel 7334 Feb 13 13:33 mime.types
-rw-r--r-- 1 root wheel 383 May 13 17:01 srm.conf
-rw-r--r-- 1 root wheel 357 Feb 13 13:33 srm.conf.default
事實上目前的版本的Apache將原來httpd.conf、srm.conf與access.conf中的所有配置參數均放在了一個設定檔httpd.conf中,只是為了與以前的版本相容的原因(使用這三個設定檔案的方式來源於NCSA-httpd),才使用三個設定檔。而提供的access.conf和srm.conf檔案中沒有具體的設定。
由於在新版本的Apache中,所有的設定都被放在了httpd.conf中,因此只需要調整這個檔案中的設定。以下使用預設提供的httpd.conf為例,解釋Apache伺服器的各個設定選項。然而不必因為它提供設定的參數太多而煩惱,基本上這些參數都很明確,也可以不加改動運行Apache伺服器。但如果需要調整Apache伺服器的效能,以及增加對某種特性的支援,就需要瞭解這些設定參數的含義。
關於Apache伺服器的效能,在Internet上存在很大的爭議,基本上使用Apache的使用者幾乎都不懷疑它的優秀效能,Apache也支撐了很多著名的高負載的網站,但是在商業機構的評測中,Apache往往得分不高。很多人指出,在這些評測中,商業Web伺服器及其作業系統往往由其專業公司的工程師進行過效能調整,而Free 的作業系統和Web伺服器往往就使用其預設配置或僅僅作很小的更改。需要指出的是,除了作業系統的效能調整之外,Apache 伺服器本身的預設配置絕不是最佳化和最高效的,而是要適應幾乎所有種類作業系統、所有種類硬體下的設定,多平台的軟體不可能為特定平台和特定硬體提供最佳化的預設配置。因此要使用Apache的時候,效能調整是必不可少的。
在商業評測中忽略了的另一個事實是,評測時往往對不同種類的功能進行比較,例如使用Apache的標準CGI 的效能與ISAPI,NSAPI等伺服器端API比較,事實上Apache伺服器與此可以比較的功能為modperl ,FastCGI,與ASP類似的功能為PHP等等,只不過由於Apache的開放模式,這些功能是由獨立的開發組,作為獨立的模組來實現的。但是在評測中,測試人員沒有加入相應的模組評測其效能。
HTTP守護進程的運行參數
httpd.conf中首先定義了一些httpd守護進程運行時需要的參數,來決定其運行方式和運行環境。
ServerType standalone
ServerType定義伺服器的啟動方式,預設值為獨立方式standalone,httpd伺服器將由其本身啟動,並駐留在主機中監視串連請求。在Linux下將在開機檔案 /etc/rc.d/rc.local/init.d/apache中自動啟動Web伺服器,這種方式是推薦設定。
啟動Apache伺服器的另一種方式是inet方式,使用超級伺服器inetd監視串連請求並啟動伺服器。當需要使用inetd啟動方式時,便需要更改為這個設定,並屏蔽/etc/rc.d/rc.local/init.d/apache檔案,以及更改/etc/inetd.conf並重起inetd,那麼Apache就能從inetd中啟動了。
兩種方式的區別是獨立方式是由伺服器自身管理自己的啟動進程,這樣在啟動時能立即啟動伺服器的多個副本,每個副本都駐留在記憶體中,一有串連請求不需要產生子進程就可以立即進行處理,對於客戶瀏覽器的請求反應更快,效能較高。而 inetd方式要由inetd發現有串連請求後才去啟動http伺服器,由於inetd 要監聽太多的連接埠,因此反應較慢、效率較低,但節約了沒有串連請求時Web伺服器佔用的資源。因此inetd方式只用於偶爾被訪問並且不要求訪問速度的伺服器上。事實上inetd方式不適合http的突發和多串連的特性,因為一個頁面可能包含多個圖象,而每個圖象都會引起一個串連請求,即使雖然訪問人數造成教少,但瞬間的串連請求並不少,這就受到inetd效能的限制,甚至會影響由inetd啟動的其他伺服器程式。
ServerRoot "/usr/local"
ServerRoot用於指定守護進程httpd的運行目錄,httpd在啟動之後將自動將進程的目前的目錄改變為這個目錄,因此如果設定檔案中指定的檔案或目錄是相對路徑,那麼真實路徑就位於這個ServerRoot定義的路徑之下。
由於httpd會經常進行並發的檔案操作,就需要使用加鎖的方式來保證檔案操作不衝突,由於NFS檔案系統在檔案加鎖方面能力有限,因此這個目錄應該是本地磁碟檔案系統,而不應該使用NFS檔案系統。
#LockFile /var/run/httpd.lock
LockFile參數指定了httpd守護進程的加鎖檔案,一般不需要設定這個參數, Apache伺服器將自動在ServerRoot下面的路徑中進行操作。但如果ServerRoot為NFS檔案系統,便需要使用這個參數指定本地檔案系統中的路徑。
PidFile /var/run/httpd.pid
PidFile指定的檔案將記錄httpd守護進程的進程號,由於httpd能自動複製其自身,因此系統中有多個httpd進程,但只有一個進程為最初啟動的進程,它為其他進程的父進程,對這個進程發送訊號將影響所有的httpd進程。PidFILE定義的檔案中就記錄httpd父進程的進程號。
ScoreBoardFile /var/run/httpd.scoreboard
httpd使用ScoreBoardFile來維護進程的內部資料,因此通常不需要改變這個參數,除非管理員想在一台電腦上運行幾個Apache伺服器,這時每個Apache伺服器都需要獨立的設定檔案htt pd.conf,並使用不同的ScoreBoardFile。
#ResourceConfig conf/srm.conf
#AccessConfig conf/access.conf
這兩個參數ResourceConfig和AccessConfig,就用於和使用 srm.conf 和 access.conf 設定檔案的老版本Apache相容。如果沒有相容的需要,可以將對應的設定檔案指定為/dev/null,這將表示不存在其他設定檔案,而僅使用httpd.conf 一個檔案來儲存所有的設定選項。
Timeout 300
Timeout定義客戶程式和伺服器串連的逾時間隔,超過這個時間間隔(秒)後伺服器將斷開與客戶機的串連。
KeepAlive On
在HTTP 1.0中,一次串連只能作傳輸一次HTTP請求,而KeepAlive參數用於支援HTTP 1.1版本的一次串連、多次傳輸功能,這樣就可以在一次串連中傳遞多個HTTP請求。雖然只有較新的瀏覽器才支援這個功能,但還是開啟使用這個選項。
MaxKeepAliveRequests 100
MaxKeepAliveRequests為一次串連可以進行的HTTP請求的最大請求次數。將其值設為0將支援在一次串連內進行無限次的傳輸請求。事實上沒有客戶程式在一次串連中請求太多的頁面,通常達不到這個上限就完成串連了。
KeepAliveTimeout 15
KeepAliveTimeout測試一次串連中的多次請求傳輸之間的時間,如果伺服器已經完成了一次請求,但一直沒有接收到客戶程式的下一次請求,在間隔超過了這個參數設定的值之後,伺服器就中斷連線。
MinSpareServers 5MaxSpareServers 10
在使用子進程處理HTTP請求的Web伺服器上,由於要首先產生子進程才能處理客戶的請求,因此反應時間就有一點延遲。但是,Apache伺服器使用了一個特殊技術來擺脫這個問題,這就是預先產生多個空餘的子進程駐留在系統中,一旦有請求出現,就立即使用這些空餘的子進程進行處理,這樣就不存在產生子進程造成的延遲了。在運行中隨著客戶請求的增多,啟動的子進程會隨之增多,但這些伺服器複本在處理完一次HTTP請求之後並不立即退出,而是停留在電腦中等待下次請求。但是空餘的子進程副本不能光增加不減少,太多的空餘子進程沒有處理任務,也佔用伺服器的處理能力,因此也要限制空餘副本的數量,使其保持一個合適的數量,使得既能及時回應客戶請求,又能減少不必要的進程數量。
因此就可以使用參數MinSpareServers來設定最少的空餘子進程數量, 以及使用參數MaxSpareServers 來限制最多的空閑子進程數量,多餘的伺服器處理序副本就會退出。根據伺服器的實際情況來進行設定,如果伺服器效能較高,並且也被頻繁訪問,就應該增大這兩個參數的設定。對於高負載的專業網站,這兩個值應該大致相同,並且等同於系統支援的最多伺服器複本數量,也減少不必要的副本退出。
StartServers 5
StartServers參數就是用來設定httpd啟動時啟動的子進程副本數量,這個參數與上面定義的MinSpareServers和MaxSpareServers參數相關,都是用於啟動空閑子進程以提高伺服器的反應速度的。這個參數應該設定為前兩個值之間的一個數值,小於MinSpareServers和大於MaxS pareServers都沒有意義。
MaxClients 150
在另一方面,伺服器的能力畢竟是有限的,不可能同時處理無限多的串連請求,因此參數Maxclient s就用於規定伺服器支援的最多並發訪問的客戶數,如果這個值設定得過大,系統在繁忙時不得不在過多的進程之間進行切換來為太多的客戶進行服務,這樣對每個客戶的反應就會減慢,並降低了整體的效率。如果這個值設定的較小,那麼系統繁忙時就會拒絕一些客戶的串連請求。當伺服器效能較高時,就可以適當增加這個值的設定。對於專業網站,應該使用提高伺服器效率的策略,因此這個參數不能超過硬體本身的限制,如果頻繁出現拒絕訪問現象,就說明需要升級伺服器硬體了。對於非專業網站,不太在意對客戶瀏覽器的反應速度,或者認為反應速度較慢也比拒絕串連好,就也可以略微超過硬體條件來設定這個參數。
這個參數限制了MinSpareServers和MaxSpareServers的設定,它們不應該大於這個參數的設定。
MaxRequestsPerChild 30
使用子進程的方式提供服務的Web服務,常用的方式是一個子進程為一次串連服務,這樣造成的問題就是每次串連都需要產生、退出子進程的系統操作,使得這些額外的處理過程佔據了電腦的大量處理能力。因此最好的方式是一個子進程可以為多次串連請求服務,這樣就不需要這些產生、退出進程的系統消耗,Apache就採用了這樣的方式,一次串連結束後,子進程並不退出,而是停留在系統中等待下一次服務要求,這樣就極大的提高了效能。
但由於在處理過程中子進程要不斷的申請和釋放記憶體,次數多了就會造成一些記憶體垃圾,就會影響系統的穩定性,並且影響系統資源的有效利用。因此在一個副本處理過一定次數的請求之後,就可以讓這個子進程副本退出,再從原始的httpd進程中重新複製一個乾淨的副本,這樣就能提高系統的穩定性。這樣,每個子進程處理服務要求次數由MaxRe questPerChild定義。 預設的設定值為30,這個值對於具備高穩定性特點的Linux系統來講是過於保守的設定,可以設定為1000甚至更高,設定為0支援每個副本進行無限次的服務處理。
#Listen 3000
#Listen 12.34.56.78:80
#BindAddress *
Listen參數可以指定伺服器除了監視標準的80連接埠之外,還監視其他連接埠的HTTP請求。由於FreeBSD系統可以同時擁有多個IP地址,因此也可以指定伺服器只聽取對某個BindAddress< /B>的IP地址的HTTP請求。如果沒有配置這一項,則伺服器會回應對所有IP的請求。
即使使用了BindAddress參數,使得伺服器只回應對一個IP地址的請求,但是通過使用擴充的Listen參數,仍然可以讓HTTP守護進程回應對其他IP地址的請求。此時Listen參數的用法與上面的第二個例子相同。這種比較複雜的用法主要用於設定。此後可以用VirtualHost參數定義對不同IP的,然而這種用法是較早的HTTP 1.0標準中設定的方法,每針對一個就需要一個IP地址,實際上用處並不大。在HTTP 1.1中,增加了對單IP地址多網域名稱的的支援,使得的設定具備更大的意義。
LoadModule mime_magic_module libexec/apache/mod_mime_magic.so
LoadModule info_module libexec/apache/mod_info.so
LoadModule speling_module libexec/apache/mod_speling.so
LoadModule proxy_module libexec/apache/libproxy.so
LoadModule rewrite_module libexec/apache/mod_rewrite.so
LoadModule anon_auth_module libexec/apache/mod_auth_anon.so
LoadModule db_auth_module libexec/apache/mod_auth_db.so
LoadModule digest_module libexec/apache/mod_digest.so
LoadModule cern_meta_module libexec/apache/mod_cern_meta.so
LoadModule expires_module libexec/apache/mod_expires.so
LoadModule headers_module libexec/apache/mod_headers.so
LoadModule usertrack_module libexec/apache/mod_usertrack.so
LoadModule unique_id_module libexec/apache/mod_unique_id.so
ClearModuleList
AddModule mod_env.c
AddModule mod_log_config.c
AddModule mod_mime_magic.c
AddModule mod_mime.c
AddModule mod_negotiation.c
AddModule mod_status.c
AddModule mod_info.c
AddModule mod_include.c
AddModule mod_autoindex.c
AddModule mod_dir.c
AddModule mod_cgi.c
AddModule mod_asis.c
AddModule mod_imap.c
AddModule mod_actions.c
AddModule mod_speling.c
AddModule mod_userdir.c
AddModule mod_proxy.c
AddModule mod_alias.c
AddModule mod_rewrite.c
AddModule mod_access.c
AddModule mod_auth.c
AddModule mod_auth_anon.c
AddModule mod_auth_db.c
AddModule mod_digest.c
AddModule mod_cern_meta.c
AddModule mod_expires.c
AddModule mod_headers.c
AddModule mod_usertrack.c
AddModule mod_unique_id.c
AddModule mod_so.c
AddModule mod_setenvif.c
Apache伺服器的一個重要特性就是其模組化的結構,這不但表現為其能在編譯時間能通過新的模組加入新的功能,還表現為其模組可以動態載入入http服務程式中,而不必載入不需要的模組。使用Apache的動態載入模組只需要設定好Load Module和AddModule參數就可以了,這種特性就是Apache的 DSO(Dynamic Shared Object)特性,然而要想充分使用DSO特性仍然不是一個簡單的事情,不適當的改動這裡的設定就可能造成伺服器不能正常啟動。因此如果不是要增加或減少伺服器提供的功能,就不要改動這裡的設定。
上面這些列表就顯示了Linux下的預設Apache伺服器支援的模組,事實上很多模組是沒有必要的,不必要模組不會被載入記憶體。模組可以靜態串連到pache 伺服器內部,也可以這樣動態載入,將Apache的特性都編譯成動態可載入模組是該Port的做法,而不是Apache的預設做法,這樣就以犧牲很小的效能的同時,帶來極大的靈活性。
因而動態可載入的能力還是對效能有輕微的影響,因此可以重新編譯Apache,將自己所需要的功能編譯進Apache 伺服器內部,可以讓系統顯得更為乾淨,效率也有輕微的提高。通常僅僅為了這一個目的就重新編譯Apache是沒有必要的,如果需要增加其他特性而重新編譯Apache,不妨在增加其他模組的同時將所有的模組都靜態串連入Apache 伺服器。有的使用者更喜歡動態載入模組,那麼也不妨全部都使用動態載入模組。
這些模組都被放置到/usr/local/apache/libexec/目錄下, 每個模組對應Apache伺服器的一個特性。詳細解釋每個模組的功能需要相當多的篇幅,其中比較重要的特性將在後面相應的地方中進行解釋,而具體每個模組的功能及用法就需要查看Apache的文檔。
#ExtendedStatus On
Apache伺服器可以通過特殊的HTTP請求,來報告自身的運行狀態,開啟這個ExtendedStatus 參數可以讓伺服器報告更全面的運行狀態資訊。
主伺服器設定
Apache伺服器需要各種設定,以定義自己使用各種參數以提供Web服務。對於使用的情況,除了在的定義項中覆蓋的設定之外(有的設定必須重新定義),這裡的設定也是的預設設定。
Port 80
Port定義了Standalone模式下httpd守護進程使用的連接埠,標準連接埠是80。這個選項只對於以獨立方式啟動的伺服器才有效,對於以inetd方式啟動的伺服器則在inetd.conf中定義使用哪個連接埠。
在Unix下使用80連接埠需要root許可權,一些管理員為了安全的原因,認為 httpd 伺服器不可能沒有安全性漏洞,因而更願意使用普通使用者的許可權來啟動伺服器,這樣就不能使用80連接埠及其他小於1024的連接埠,而必須使用大於 1024的連接埠來啟動httpd,一般情況下8000或8080也是常用的連接埠。而Apache httpd伺服器本身可以在以root許可權開啟80連接埠後再改變為普通使用者身份進行運行,這樣就減少了危險性,因而就不需要考慮這個安全問題。但是如果普通使用者也想安裝配置自己的WWW伺服器,那麼就不得不使用大於1024的連接埠。
User nobody
Group nogroup
User和Group配置是Apache的安全保證,Apache在開啟連接埠之後,就將其本身設定為這兩個選項設定的使用者和組許可權進行運行,這樣就降低了伺服器的危險性。這個選項也只用於 Standalone模式,inetd模式在inetd.conf中指定運行Apache的使用者。由於伺服器必須執行改變身份的setuid()操作,因此初始進程應該具備root許可權,如果是使用非root使用者來啟動Aapche,這個配置就不會發揮作用。
預設設定為nobody和nogroup,這個使用者和組在系統中不擁有檔案,保證了伺服器本身和由它啟動的CGI 進程沒有許可權變更檔系統。在某些情況下,例如為了運行CGI與Unix互動,也需要讓伺服器來訪問伺服器上的檔案,如果仍然使用nobody和nogroup,那麼系統中將會出現屬於nobody的檔案,這對於系統安全是不利的,因為其他程式也會以nobody和nogroup的許可權執行某些操作,就有可能訪問這些nobody擁有的檔案,造成安全問題。一般情況下要為Web服務設定一個特定的使用者和組,同時在這裡更改使用者和組設定。
ServerAdmin
設定檔中應該改變的也許只有ServerAdmin, 這一項用於配置WWW伺服器的管理員的email地址,這將在HTTP服務出現錯誤的條件下返回給瀏覽器,以便讓Web使用者和管理員聯絡,報告錯誤。習慣上使用伺服器上的webmaster作為WWW伺服器的管理員,通過郵件伺服器的別名機制,將發送到webmaster 的電子郵件發送給真正的Web管理員。
#ServerName new.host.name
預設情況下,並不需要指定這個ServerName參數,伺服器將自動通過名字解析過程來獲得自己的名字,但如果伺服器的名字解析有問題(通常為反向解析不正確),或者沒有正式的DNS名字,也可以在這裡指定IP地址。當ServerName設定不正確的時候,伺服器不能正常啟動。
通常一個Web伺服器可以具有多個名字,客戶瀏覽器可以使用所有這些名字或IP地址來訪問這台伺服器,但在沒有定義的情況下,伺服器總是以自己的正式名字回應瀏覽器。ServerName就定義了Web伺服器自己承認的正式名字,例如一台伺服器名字(在DNS中定義了A類型)為exmaple.org.cn,同時為了方便記憶還定義了一個別名(CNAME記錄)為,那麼Apache自動解析得到的名字就為example.org.cn,這樣不管客戶瀏覽器使用哪個名字發送請求,伺服器總是告訴客戶程式自己為 example.org.cn。雖然這一般並不會造成什麼問題,但是考慮到某一天伺服器可能遷移到其他電腦上,而只想通過更改DNS中的www別名配置就完成遷移任務,所以不想讓客戶在其書籤中使用 Linux 記錄下這個伺服器的地址,就必須使用ServerName來重新指定伺服器的正式名字。
DocumentRoot "/www/"
DocumentRoot定義這個伺服器對外發布的超文字文件存放的路徑,客戶程式請求的UR L就被映射為這個目錄下的網頁檔案。這個目錄下的子目錄,以及使用符號串連指出的檔案和目錄都能被瀏覽器訪問,只是要在URL上使用同樣的相對目錄名。
注意,符號串連雖然邏輯上位於根文檔目錄之下,但實際上可以位於電腦上的任意目錄中,因此可以使客戶程式能訪問那些根文檔目錄之外的目錄,這在增加了靈活性的同時但減少了安全性。Apache在目錄的存取控制中提供了FollowSymLinks選項來開啟或關閉支援符號串連的特性。
Options FollowSymLinks
AllowOverride None
Apache伺服器可以針對目錄進行文檔的存取控制,然而存取控制可以通過兩種方式來實現,一個是在設定檔案 httpd.conf(或access.conf)中針對每個目錄進行設定,另一個方法是在每個目錄下設定存取控制檔案,通常存取控制檔案名稱字為.htaccess。雖然使用這兩個方式都能用於控制瀏覽器的訪問,然而使用設定檔的方法要求每次改動後重新啟動httpd守護進程,比較不靈活,因此主要用於設定管理員系統的整體安全控制策略,而使用每個目錄下的.htaccess檔案設定具體目錄的存取控制更為靈活方便。
Directory語句就是用來定義目錄的訪問限制的,這裡可以看出它的標準文法,為一個目錄定義訪問限制。上例的這個設定是針對系統的根目錄進行的,設定了允許符號串連的選項FollowSymLinks ,以及使用AllowOverride None表示不允許這個目錄下的存取控制檔案來改變這裡進行的配置,這也意味著不用查看這個目錄下的相應存取控制檔案。
由於Apache對一個目錄的存取控制設定是能夠被下一級目錄繼承的,因此對根目錄的設定將影響到它的下級目錄。注意由於AllowOverride None的設定,使得Apache伺服器不需要查看根目錄下的存取控制檔案,也不需要查看以下各級目錄下的存取控制檔案,直至httpd.conf(或access.conf )中為某個目錄指定了允許Alloworride,即允許查看存取控制檔案。由於Apache對目錄存取控制是採用的繼承方式,如果從根目錄就允許查看存取控制檔案,那麼Apache就必須一級一級的查看存取控制檔案,對系統效能會造成影響。而預設關閉了根目錄的這個特性,就使得Apache從httpd.conf中具體指定的目錄向下搜尋,減少了搜尋的級數,增加了系統效能。因此對於系統根目錄設定AllowOverride None不但對於系統安全有協助,也有益於系統效能。
Options Indexes FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
這裡定義的是系統對外發布文檔的目錄的訪問設定,設定不同的 AllowOverride選項,以定義設定檔中的目錄設定和使用者目錄下的安全控制檔案的關係,而Options選項用於定義該目錄的特性。
設定檔和每個目錄下的存取控制檔案都可以設定訪問限制,設定檔案是由管理員設定的,而每個目錄下的存取控制檔案是由目錄的屬主設定的,因此管理員可以規定目錄的屬主是否能覆蓋系統在設定檔案中的設定,這就需要使用 啊AllowOverride參數進行設定,通常可以設定的值為:
AllowOverride的設定 對每個目錄存取控制檔案作用的影響
All 預設值,使存取控制檔案可以覆蓋系統配置
None 伺服器忽略存取控制檔案的設定
Options 允許存取控制檔案中可以使用Options參數定義目錄的選項
FileInfo 允許存取控制檔案中可以使用AddType等參數設定
AuthConfig 允許存取控制檔案使用AuthName,AuthType等針對每個使用者的認證機制,這使目錄屬主能用口令和使用者名稱來保護目錄 Limit 允許對訪問目錄的客戶機的IP地址和名字進行限制
每個目錄具備一定屬性,可以使用Options來控制這個目錄下的一些訪問特性設定,以下為常用的特性選項:
Options設定 伺服器特性設定
All 所有的目錄特性都有效,這是預設狀態
None 所有的目錄特性都無效
FollowSymLinks 允許使用符號串連,這將使瀏覽器有可能訪問主目錄 (DocumentRoot)之外的文檔 SymLinksIfOwnerMatch 只有符號串連的目的與符號串連本身為同一使用者所擁有時,才允許訪問,這個設定將增加一些安全性
ExecCGI 允許這個目錄下可以執行CGI程式 Indexes 允許瀏覽器可以產生這個目錄下所有檔案的索引,使得在這個目錄下沒有index.html(或其他索引檔案)時,能向瀏覽器發送這個目錄下的檔案清單
此外,上例中還使用了Order、Allow、Deny等參數,這是Limit語句中用來根據瀏覽器的網域名稱和 IP地址來控制訪問的一種方式。其中Order定義處理Allow和Deny的順序,而Allow、Deny則針對名字或IP進行存取控制設定,上例使用allowfrom all,表示允許所有的客戶機訪問這個目錄,而不進行任何限制。
UserDir public_html
當在一台Linux上運行Apache伺服器時,這台電腦上的所有使用者都可以有自己的網頁路徑,形如 ,使用波浪符號加上使用者名稱就可以映射到使用者自己的網頁目錄上。映射目錄為使用者個人主目錄下的一個子目錄,其名字就用UseDir這個參數進行定義,預設為public_html。如果不想為正式的使用者提供網頁服務,使用DISABLED作UserDir的參數即可。
#
# AllowOverride FileInfo AuthConfig Limit
# Options MultiViews Indexes SymLinksIfOwnerMatch IncludesNoExec
#
# Order allow,deny
# Allow from all
#
#
# Order deny,allow
# Deny from all
#
#
這裡可以看到Directory的另一個用法,即可以通過簡單的模式比對方法,針對分布在不同目錄下的子目錄定義存取控制許可權。這樣設定就需要Apache伺服器對每個路徑進行額外的處理,因此就會降低伺服器的效能,所以預設情況並沒有開啟這種訪問限制。