一般來說,Apache會將組態檔集中擺放在 conf 資料夾中

  • Windows: {Apache Path} / conf,2.2之後,.conf劃分的更細,在conf下又多了一個extra的資料夾 ,可分別設定,記得將httpd.conf中的include前的#去掉
  • Linux: 新版的 Apache 將各種模組會用到的組態檔集中擺放在 /etc/httpd/conf.d 資料中,例如:mod_perl、mod_ssl、mod_php……等,因此在組態檔中有這一行:
    Include conf.d/*.conf,如果您的 Apache 是從舊版升級上來的,記得把這一行加到原來的組態檔中
分類 組態名稱 預設值 使用說明
基本設定 ServerRoot /etc/httpd Apache 主程式所在目錄,這是不需要修改的。
Timeout 300 用來設定連線等待時間,包含:連線完成後,瀏覽器應於多少時間內送出 GET 指令、瀏覽器送出 POST 或 PUT 指令後,應於多少時間內送出網頁或表單資料、伺服器回應網頁資料後,瀏覽器應於多少時間內回覆收到。這個設定是以秒作為單位。
KeepAlive off 是否允許同一連線送出多個要求,通常一個要求會起始一條連線,這樣雖會耗用較多的系統資源,但是回應比較迅速,當連線數太多系統資源不足時,可以考慮使用此功能。
MaxKeepAliveRequests 100 設定每條連線最多可接受多少要求,設得越高重啟連線的機率就越低,對改善 KeepAlive 的效能很有幫助。
KeepAliveTimeout 15 當一條連線服務完一個要求後,會等待一段時間以便接受下一個要求,如果逾時就關閉連線,這個設定值與前面介紹的 Timeout 意義完全不同,可千萬別搞混了。
Listen 80 和舊版的 Port 不同,它允許一個伺服器可以同時傾聽多個通訊埠,當埠號被設定少於 1024 的情形下,可以允許一般使用者將 Apache 安裝在個人家目錄下,成為個人專屬伺服器,像這種站台地下化的情形,系管人員應該要留意追查。
User apache 預設啟動帳號,事實上 Apache 啟動時還是以 root 身分進行準備工作,直到接受服務時才改用此帳號。為了安全考量,公開的 WEB 服務不應使用 root 身分來提供服務。
Group apache 預設啟動群組。
ServerAdmin 請務必修改為該伺服器的實際負責人信箱。
ServerName 用來提供服務的網址及埠號,當省略不設定時,預設會使用 hostname 及 80 port。
HostnameLookups off 要不要對連線的客戶端進行 DNS 查詢驗證,這是為了避免駭客用假 IP 攻擊主機,但進行 DNS 查詢會降低伺服器效能,特別是當網站非常受歡迎的情況下,問題將會很嚴重
DefaultLanguage nl 預設語系
LanguagePriority 協商語系時的優先順序
AddDefaultCharset iso-8859 預設字元集
AddType 用來新增 MIME 格式,當 Apache 將檔案傳輸給 Client 時,必須告知 Client 該檔案屬於何種格式,這樣瀏覽器才能正確顯示或播放該檔案,常用的格式都已預先設好,因此除非要作特殊應用否則不需設定(有些站台故意隱藏正確的附加檔名,來限制某些檔案的下載)
AddHandler 定義 Apache Handler 模組所對應的附加檔名,當附加檔名吻合時,會交由該模組處理。目前支援的 Handler 模組,主要有 cgi-script(perl)、imap-file(imagemap)、type-map(多語系)……等,這些設定都不需修改。(有些書教大家在 AddHandler cgi-script .cgi 的後面加上 .pl,這是多餘的,因為按照 perl 的慣例 .pl 檔案會被引入到 .cgi 中,本身並不會單獨執行,因此這樣設是多餘的)
AddOutputFilter 屬於新版 Apache 支援的 Filter 模組,應該使用 AddOutputFilter 而非 AddHandler,例如過去屬於 Handler 模組的 SSI,現在已經變成 Filter 模組,因此設定由
AddHandler server-parsed .shtml
改成
AddOutputFilter INCLUDES .shtml
AddPathInfo on 這個選項用來讓 Filter 和 core 模組在傳送剖析過的網頁資料時,能使用 PATH_INFO 環境變數來傳遞 basedir,以免相對路徑無法對應正確
特異功能 Action 這個功能的設計相信是絕大多數網站經營者的福音,它允許為某種 MIME 類型或某個 Handler 設定前導執行程式,透過這個功能將可以為站台中的每個檔案進行權限檢查和過濾,以防堵不肖業者砍站的行徑,以前使用者從後門偷檔的情形也將受到遏止,設定方式如下:
Action media/type /cgi-script/location
Action handler-name /cgi-script/location
網頁目錄設定 DocumentRoot /var/www/html 根網站的主目錄
UserDir public_html 個人網頁的主目錄,建議改成 www 比較容易被學生接受
DirectoryIndex index.html 設定首頁的名稱,為了配合 FrontPage 教學,請修改成 index.html index.htm default.htm default.html
AccessFileName .htaccess .htaccess 是用來做目錄存取控制的,如果您修改了它的檔名,不要忘記一併修改底下的設定:

Order allow,deny
allow from all

Alias 用來設定虛擬目錄,可以將某個目錄虛擬成根網站內的子目錄
ScriptAlias 功能與 Alias 相同,但為了讓程式能正常執行,該資料夾內的檔案權限應設為 755
Redirect 原本是用來幫助使用者連上網頁的新網址,但大多應用來對應位於不同主機的虛擬目錄
目錄權限設定 用來規範網頁目錄的權限,可以設定 Options、AllowOverride、Order、Allow、Deny 等各種權限,除此之外還能內含 、 等標籤進行進一步設定。特別要注意的是,目錄本身可以使用 * 通配字元,例如:

是表示 /home 目錄下所有命名為 public_html 的子目錄,都要套用此權限設定

Options Indexes
Includes
FollowSymLinks
可以選用的功能如下:
Indexes 表示當找不到首頁時,要顯示目錄清單
Includes 啟用 SSI(Server Side Include,) 功能
IncludesNoExec 啟用 SSI 中的 include 但忽略 exec
FollowSymLinks 允許用 Link 檔案連結網頁目錄外的實體檔案
SymLinksifOwnerMatch 當實體檔案與 Link 檔案屬於同一個人擁有時,才允許連結
ExecCGI 允許執行 CGI 程式
Multiviews 啟用多語言網頁功能(網頁應以語系作為附加檔名, 例如 index.html.zh_tw)
None 關閉所有功能
All 除了 Multiviews 以外的全部功能
AllowOverride None 是否允許 .htaccess 中的設定值取代 Options 的設定,可以選用的功能如下:
Options 啟用 .htaccess 中的 Options 設定
FileInfo 啟用 .htaccess 中的 Files 設定,請參考 標籤
AuthConfig 啟用 .htaccess 中的 Auth 相關設定
Limit 啟用 .htaccess 中的 Limit 設定,請參考 標籤
None 不允許使用 .htaccess
All 允許忽略 Options 設定,改由 .htaccess 來進行存取控制
Order Allow,Deny 進行連線來源的網址或 IP 過濾時,是採用白名單(預設值)還是黑名單
Allow from all 誰可以存取這個資料夾,all 表示任何人都可以,這個欄位可以使用網址、網域名稱、IP、省略尾碼的 IP、網路號碼/遮罩 等等方式來作過濾
Deny from all 哪些人不允許存取這個資料夾,設定方式同上
這個標籤可以內嵌在 中,也可以獨立存在,兩者的作用範圍不同。它和 相同也可以使用 Order、Allow、Deny 作存取控制,不同的地方是可以使用正規表達式來匹配檔案,而且可以用 ~ 作反向匹配,例如:

Order allow,deny
allow from all

這個標籤必須內嵌在 中,主要是用來限制某些 HTTP 1.1 指令,例如:HEAD、PUT、DELETE、TRACE、CONNECT 等,範例如下: Order allow,deny
Allow from all Order deny,allow
Deny from all
這個標籤允許針對 Client 身分進行權限管理,可以使用的關鍵字有:AuthType、AuthName、AuthUserFile、AuthGroupFile、require……等等,以上設定的詳細用法在後面說明。
除此之外在 Location 內也能使用 Order、Allow、Deny 來進行存取控制,並且允許使用部分網域名稱來進行比對,例如:
Allow from .spps.tp.edu.tw
目錄清單設定 IndexOptions FancyIndexing 當一個目錄找不到首頁時,可以選擇要不要由 Apache 幫忙製作目錄清單,這個選項用來控制該目錄清單的功能,預設值 FancyIndexing 會啟用目錄清單各欄位的排序功能,其它可設定的功能包括:IconHeight、IconWidth、IconsAreLinks、VersionSort、NameWidth……等等。
IconHeight、IconWidth 用來指定圖示大小
IconsAreLinks 讓小圖示也變成超連結
VersionSort 當檔案名稱後面附有版本號碼時,根據版本號碼排序
NameWidth 指定檔名顯示幾個英文字
AddIconByEncoding AddIcon 用來設定檔案格式與小圖示的對應關係,ByEncoding 意思是要比對 MIME 中的 Encoding 欄位,MIME 格式如下:

檔名(Filename) 類型(Type) 編碼(Encoding)
*.z application/octet-stream x-compress
*.gz application/octet-stream x-gzip
AddIconByType 根據檔案的 MIME Type 來決定使用哪一個小圖示
AddIcon 根據檔案的副檔名來決定使用哪一個小圖示
DefaultIcon /icons/unknown.gif 當以檔案格式比對不到符合條件的小圖示時,預設使用這個圖示
ReadmeName README.html 產生出來的目錄清單,結尾會加上這個檔案的內容
HeaderName HEADER.html 同樣也是用來附加資訊,但是會加在目錄清單的上方
IndexIgnore 用來定義哪些檔案不要顯示在目錄清單上,包含: . 開頭、~ 或 # 結尾…等
虛擬站台 NameVirtualHost 用來設定 name base 虛擬站台,所謂 name base 是指該虛擬站台與預設站台使用同一個 IP 但不同網址,這時就可以透過網址來區分 Client 所要求的哪一個站台的資料,使用 name base 必須先在 DNS 做好 A 紀錄,NameVirtualHost 用法與 ServerName 完全相同
用來設定虛擬站台的各項參數,例如:

ServerAdmin wam@test.tp.edu.tw
DocumentRoot /usr/libexec/wam
ServerName wam.spps.tp.edu.tw
ErrorLog logs/wam-error_log
CustomLog logs/wam-access_log common
DirectoryIndex wam.cgi

Options ExecCGI
AllowOverride None
Order allow,deny
Allow from 192.57
Deny from all

快取伺服器設定 CacheNegotiateDocs Off Apache 預設會要求 Proxy 不要快取網頁,如果您的網頁沒有提供互動功能,那麼開啟這項功能將有助於改善網路環境
ProxyRequests On 通常這一行會被 remark 起來,這是用來開啟 Apache 內附的 Proxy Server
ProxyVia On 用來定義 Via 標頭是否要使用,Via 用來提供 Apache Proxy 資訊給 Client 端,On 提供 hostname,Full 提供 hostname 和 version,Off 不作任何處理,Block 則會將 Via: 標頭去除
定義 Proxy 功能的權限控制,可以使用 Order、Allow、Deny 作細部設定
CacheRoot /etc/httpd/proxy 快取網頁擺放的資料夾
CacheSize 5 快取網頁所能使用的磁碟空間,預設是 5KB
CacheGcInterval 4 設定快取檢查的頻率,當檢查到快取空間已經超過 CacheSize 的設定時,則刪除比較舊的檔案
CacheMaxExpire 24 正常的快取網頁保留 24 小時
CacheLastModifiedFactor 0.1 當快取的網頁未設定過期期限時,則以 (今天 – 網頁最後更新時間)*0.1 作為過期期限
CacheDefaultExpire 1 當取得檔案的通訊協定無法支援過期設定時(FTP),該檔案視為 1 小時後過期
NoCache 設定不要快取的網站或網域

參考資料: http://www.spps.tp.edu.tw/documents/memo/linux/linux_step2.htm