Apache httpd.conf

httpd.conf

global environment參數:

主機相關參數
serverroot “/usr/local/apache” //apache所安裝的目錄,相對路徑對應的目錄
serveradmin atcg@pie.com.tw //出問題時會寄信到atcg@pie.com.tw
servername www.socket.idv.tw //伺服器網域名稱
documentroot “/usr/local/apache/htdocs” //放置網頁的目錄
directoryindex index.html //設定以index.html為預設首頁
listen 80 //指定port為80
user nobody //讓apache以該nobody帳號執行
group nobody //同上

網路與http調校相關參數
keepalive on //on=使用者用一條連線可瀏覽多網頁,off=一條連線只能瀏覽一網頁
keeplivetimeout 15 //keeplive為on時,一條連線15秒內無任何網頁請求則斷線
timeout 300 //300秒內沒處理完GET,POST等request,而且沒動作時,則自動斷線
maxkeepaliverequest 100 //一條連線可服務100個網頁要求,超過會在建另一條新連線
limitrequestbody //限制http要求的本文大小,單位為byte,最多約2g
limitrequestfield //表頭欄位數量上限,預設100,值為0-32767,0表無限,一般欄位約20個左右
limitrequestfieldsize //每個表頭欄位的容量上限,預設8190bytes
listenbacklog  //佇列長度上限,來自用戶端要求會先被置入此佇列,預設511
sendbuffersize //外送封包時的緩衝區大小,單位為bytes
refer
http://note.artchiu.org/2009/04/14/Apache-中-KeepAlive-配置的合理使用

程序管理用參數
maxrequestsperchild 0 //1個子程序可提供的連線的數量,0表示無限制,非0可避免記憶體洩露,建議設1000~10000
startservers 8 //apache啟動時先產生8個子程序來提供服務
maxspareservers 20 //連線進入時,子程序會漸漸增多,最多只能產生20個
minspareservers 5 //連線減少時子程序會漸漸減少,最少到5個
maxclients 256 //最多只能同時服務256個使用者,若超過則會回應server unavailable,並等待連線
serverlimit //可設定的程序數量上限,值不可高於maxclients及threadsperchild,若maxclients低於256則不需使用

執行緒管理用參數
startthreads //開機時建立的執行緒數量
minsparethreads //允許閒置的執行緒下限,workermpm預設250
maxsparethreads //允許閒置的執行緒上限,workermpm預設500
threadsperchild //每個子程序產生的執行緒數量,workermpm預設25
threadlimit //子程序可設定的執行緒數量上限,workermpm設64,不可超過最大值20000
maxthreadsperchild //每個子程序產生的執行緒數量上限,和threadlimit同

記錄檔相關參數
hostnamelookups off //記錄log時,off=使用ip記錄,on=使用網域記錄
logfromat 格式內容 combined //指定記錄格式內容的別名為combined
customlog logs/access_log combined //用combined的格式記錄,格式另外還有common,referer,agent
errorlog logs/error_log //記錄錯誤的位置
loglevel warn //指定記錄等級,有emerg,alert,crit,error,warn,notice,info,debug,越右越詳細

和個人空間有關的參數
userdir /home/*/www //設定每個使用者能在自己家目錄的www目錄內放網頁
userdir enable user1 user2… //只開放user的空間
userdir disable user1 user2… //關閉某些user的空間
ps:目錄需設755,否則用戶端存取時會出現權限不足訊息

重導相關參數
alias /icons/ “/var/www/icons/” //讓localhost/icons的連結到/var/www/icons/,要用正規表示可用aliasmatch
scriptalias /cgi-bin/ “/var/www/cgi-bin/” //將後面的path對應到網頁目錄下的/cgi-bin/,而被指定path是可執行的
redirect 舊url 新url //將舊的url轉到新的url

從外部讀入相關參數
Include conf.d/*.conf //以相對路徑把所有.conf設定檔讀入,也可讀目錄,讀取順序依檔名
loadmodule xxx_module modules/mod_xxx.so //把xxx.so模組載入,若非必要勿改變載入順序

快取相關參數
cacheroot “var/cache/mod_proxy” //指定儲存快取的目錄
cachesize 1024 //指定快取容量上限,單位為kb,最多1m
cachegcinterval 1.5 //檢查快取容量的時間間隔,單位為小時,apache不會主動檢查
cachemaxexpire 60 //設定儲存在快取的有效期限,單位為小時
cachelastmodifiedfactor 0.2 //以最後異動至目前的時間*0.2得出逾時間時,一到逾時時間則會移除文件
cachedefaultexpire //同上,但對像不是http文件
nocache //指定不用快取的網站,值為ip或主機名稱

代理相關參數
proxyrequests on //啟用代理伺服器功能
proxyblock //限制代理傳送對象,可指定所有主機,網域等
noproxy //指定可直接存取主機的電腦或網域等,僅限內部網路
proxypass path/ url //將用戶要求的url轉送至本機path/目錄中
proxyremote url newurl:8080 //將url轉向至另一主機的newurl的8080埠
 url可換成http,ftp,*,即將符合值的都轉往新的位置

檔案與mime相關參數
addtype mime格式 //管理網頁的mime格式,會有多個
typesconfig /etc/mime.types  //指定mime格式檔案
defaulttype text/plain  //當無法辨識此文件資料類型時,則使用預設text/plain
forcetype  //mime對應檔案用,只能適用在.htacess及目錄層級,但優先權最大
action mime script  //當檔案符合此mime類型時,執行指定script
addhandler filter .file  //指定特定副檔名使用特定的filter
removetype .file //取消副檔名.file的mime對應

壓縮編碼
addencoding 編碼程式 .file //說明該.file是用何種編碼程式,並非所有瀏覽器都支援
deflatememlevel [1-9] //值越高壓縮越快,記憶體使用也越多
deflatewindowsize [1-15] //值越高壓縮率越高,但壓縮時間會變長

語言相關參數
addlanguage 語言版本標籤 .file1 .file2… //指定.file檔案的內容使用那種語言,如zh-tw,zh-cn,en…
defaultlanguage tw //當無法識別文件的語言版本時,則用tw的語言版本
removelanguage 語言版本 //取消先前的語言版本
languagepriority en da nl…. //使用多語言時,依此順序與瀏覽器溝通選出最適合的
forcelanguagepriority prefer fallback  //2.0.30後支援,能確定用戶端收到相同單一文件,協調一種語言顯示

字元集相關參數
addcharest 字元集 .file1 .file2… //指定副檔名.file使用該字元集
adddefaultcharset utf-8 //若無法辨識此文件字元隻時,預設使用為utf8
removecharest 字元集  //移除之前定義的字元集

其他參數
errordocument 錯誤代碼 處理方式 //發生錯誤時將顯示符合錯誤代碼的處理方式,有顯示檔案,顯示字串,本機script,url外部導向
ExtendedStatus On //使用server-status模組時,可在url:hostname/server-status取得主機狀態的資訊
 ps:若後接?notable表不用表格,?refresh=60表60秒更新一次,?auto表以行列顯示

………………………………………………………..

container參數:
形式:
< tag “path”>…< /tag > 在符合條件的path中,套用此範圍的指令
< tagmatch “path”>…< /tag >在符合正規表示法條件的path中,套用此範圍的指令
< tag ~”path”>…< /tag > 同上
tag若是directory表目錄,file表檔案,location表url,可用巢狀,子目錄會繼成父目錄

< Location /server-status>< /Location> 伺服器狀態資訊的目錄
< Location /server-info> 伺服器組態資訊的目錄
< Directory “/”> 所有目錄的設定
< Directory “/var/www/cgi”>< /Directory> cgi目錄的設定
< Directory “/var/www/error”>< /Directory> error目錄的設定
< Directory “/var/www/icons”>< /Directory> icons目錄的設定
< Directory “/var/www/html”>< /Directory> 網頁預設目錄的設定
< Files ~ “^.ht”> ht開頭的檔案設定
< VirtualHost *:80>< /VirtualHost> 虛擬主機設定用,servername和documentroot的設定要放裡面


tag內的參數有:
1 option value1 value2… //設定目錄屬性,value有
  none:無啟動任何功能
  all:啟動所有功能,除了multiviews
  execcgi:目錄可執行cgi
  followsymlinks:接收符號連結,有安全風險
  includes:可用ssi,server side include
  includesnoexec:可用ssi,但不能透過ssi執行系統上任何程式
  indexes:可讓瀏覽者檢視目錄,有安全風險,-indexes是關閉,+indexes是啟用
  indexoptions [+|-]value:目錄索引選項設定
  indexignore string:取消某些檔名為string的顯示
  multiviews:讓apache對瀏覽器特性提供最佳呈現方式
  symlinksifownermatch:此項對location無效
allowoverride value1 value2.. //控制那些參數可讓.htaccess修改以覆寫主設定,參數有:
  option:允許option系列的參數
  all:允許所有覆寫功能
  authconfig:允許使用mod_auth模組中的驗證指令
  fileinfo:允許使用控制檔案型態與handler的指令
  indexes:允許使用控制目錄索引的指令
  limit:允許使用主機存取指令(由options可查詢)
  none:停用所有選項且.htaccess檔會被完全忽略
3 order allow,deny //如果值有重覆,以deny優先
 allow from all //all可換成ip/mask,ip,domain name,hostname
 deny from all //拒絕全部連線,網頁會出現forbidden

條件式組態設定
< ifdefine>
ex:假如var被定義則執行tag內指令
< IfDefine var>
Redirect /oldurl /newurl
< /IfDefine>
< ifmodule>< /ifmodule> 用於模組
ex:若有ssl的模組則執行tag內指令
< IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
< /IfModule>
用於版本
ex:< IfVersion >= 2.1>< /IfVersion> 版本高於2.1執行tag內指令


…………………………………………………….

不太會去動到的參數

browsermatch 瀏覽器 //針對瀏覽器種類給予對應的額外訊息,會有多個
servertokens OS //伺服器回應的表頭資訊內容,OS是預設
pidfile run/httpd.pid //指定httpd.pid記錄httpd執行時的程序id
usecanonicalname off //表主機名稱型態,off=’servername:port’,on=’servername’
accessfilename .htaccess  //定義.htaccess為設定檔,可多個,但過多效能會較差
serversignature on //在自行產生的網頁中,將一些資訊與輸出訊息以頁尾方式加入網頁,值可有on,off,email(附加mail資訊)
非必要參數
scoreboardfile //用來儲存父程序與子程序通訊內容,沒指定則在記憶體產生

用戶端驗證相關參數
共通驗證相關參數,不管是基本,摘要或匿名皆需用到
authname //”提示字元”,需配合其他指令使用
Authtype  //編碼方式,可設Basic或digest,需配合其他指令使用
AuthUserFile htpasswd建立的密碼檔絕對路徑  //用htdigest建立的不可用此參數
AuthgroupFile 群組檔案的絕對路徑  //此檔包含執行使用者驗證的群組名稱及密碼列表
require [group|user] user1 user2… //允許存取目錄的使用者或群組,值可以為valid-user,表示所有合法使用者
mod_authn_anon模組提供驗證相關參數
anonymous user1 user2… //設定可以用匿名登入的帳號
anonymous_authoritative //若為on則系統不允許再使用其他驗證方式
anonymous_logemail //若為on,則輸入作密碼的email,將會存在記錄檔中
anonymous_mustgiveemail //若為on,則須輸入email做密碼
anonymous_nouserid  //若為on,表示可以使用空白帳號
mod_auth_digest模組提供驗證相關參數
authdigestalgorithm  //可指定md5或md5-sess演算法驗證
authdigestdomain 網址1 網址2… //指定那個網址以下目錄檔案都使用相同帳密進行驗證
authdigestfile 絕對路徑 //指定含使用者名稱,驗證相關資訊的文字檔,需用htdigest指令新增
authdigestgroupfile 絕對路徑 //同上,設定群組用
authdigestnccheck //是否傳送至伺服器的nonce數量檢查
authdigestnonceformat nonce格式 //設定nonce格式
authdigestnoncelifetime nonce逾期秒數 //設為負數表永不過期
authdigestqop  //決定摘要式驗證的quality of protection等級,可選的有none,auth,auth-int
 none用舊式rfc2069,無完整性檢查,auth-int有驗證和完整性檢查,auth只有驗證,auth auth-int由瀏覽器選擇檢證方式





參考來源
apache2.0深入研究
linux伺服器建置與管理
鳥哥的私房菜