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無效 2 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伺服器建置與管理 鳥哥的私房菜 |