《apache常用配置指令說明(3)》要點(diǎn):
本文介紹了apache常用配置指令說明(3),希望對(duì)您有用。如果有疑問,可以聯(lián)系我們。
相關(guān)主題:apache配置
29. 設(shè)置動(dòng)態(tài)加載的DSO模塊
#如果需要提供基于文本文件的認(rèn)證,加載此模塊,否則注釋掉
LoadModule authn_file_module modules/mod_authn_file.so
#如果需要提供基于DBM文件的認(rèn)證,加載此模塊,否則注釋掉
#LoadModule authn_dbm_module modules/mod_authn_dbm.so
#如果需要提供匿名用戶認(rèn)證,加載此模塊,否則注釋掉
#LoadModule authn_anon_module modules/mod_authn_anon.so
#如果需要提供基于SQL數(shù)據(jù)庫的認(rèn)證,加載此模塊,否則注釋掉
#LoadModule authn_dbd_module modules/mod_authn_dbd.so
#如果需要在未正確配置認(rèn)證模塊的情況下簡單拒絕一切認(rèn)證信息,加載此模塊,否則注釋掉
LoadModule authn_default_module modules/mod_authn_default.so
#此模塊提供基于主機(jī)名、IP地址、請(qǐng)求特征的訪問控制,Allow、Deny指令需要,推薦加載。
LoadModule authz_host_module modules/mod_authz_host.so
#如果需要使用純文本文件為組提供授權(quán)支持,加載此模塊,否則注釋掉
#LoadModule authz_groupfile_module modules/mod_authz_groupfile.so
#如果需要提供基于每個(gè)用戶的授權(quán)支持,加載此模塊,否則注釋掉
LoadModule authz_user_module modules/mod_authz_user.so
#如果需要使用DBM文件為組提供授權(quán)支持,加載此模塊,否則注釋掉
#LoadModule authz_dbm_module modules/mod_authz_dbm.so
#如果需要基于文件的所有者進(jìn)行授權(quán),加載此模塊,否則注釋掉
#LoadModule authz_owner_module modules/mod_authz_owner.so
#如果需要在未正確配置授權(quán)支持模塊的情況下簡單拒絕一切授權(quán)請(qǐng)求,加載此模塊,否則注釋掉
LoadModule authz_default_module modules/mod_authz_default.so
#如果需要提供基本的HTTP認(rèn)證,加載此模塊,否則注釋掉,此模塊至少需要同時(shí)加載一個(gè)認(rèn)證支持模塊和一個(gè)授權(quán)支持模塊
LoadModule auth_basic_module modules/mod_auth_basic.so
##如果需要提供HTTP MD5摘要認(rèn)證,加載此模塊,否則注釋掉,此模塊至少需要同時(shí)加載一個(gè)認(rèn)證支持模塊和一個(gè)授權(quán)支持模塊
#LoadModule auth_digest_module modules/mod_auth_digest.so
#此模塊提供文件描述符緩存支持,從而提高Apache性能,推薦加載,但請(qǐng)小心使用
LoadModule file_cache_module modules/mod_file_cache.so
#此模塊提供基于URI鍵的內(nèi)容動(dòng)態(tài)緩存(內(nèi)存或磁盤),從而提高Apache性能,必須與mod_disk_cache/mod_mem_cache同時(shí)使用,推薦加載
LoadModule cache_module modules/mod_cache.so
#此模塊為mod_cache提供基于磁盤的緩存管理,推薦加載
LoadModule disk_cache_module modules/mod_disk_cache.so
#此模塊為mod_cache提供基于內(nèi)存的緩存管理,推薦加載
LoadModule mem_cache_module modules/mod_mem_cache.so
#如果需要管理SQL數(shù)據(jù)庫連接,為需要數(shù)據(jù)庫功能的模塊提供支持,加載此模塊,否則注釋掉(推薦)
#LoadModule dbd_module modules/mod_dbd.so
#此模塊將所有I/O操作轉(zhuǎn)儲(chǔ)到錯(cuò)誤日志中,會(huì)導(dǎo)致在日志中寫入及其海量的數(shù)據(jù),只建議在發(fā)現(xiàn)問題并進(jìn)行調(diào)試的時(shí)候使用
#LoadModule dumpio_module modules/mod_dumpio.so
#如果需要使用外部程序作為過濾器,加載此模塊(不推薦),否則注釋掉
#LoadModule ext_filter_module modules/mod_ext_filter.so
#如果需要實(shí)現(xiàn)服務(wù)端包含文檔(SSI)處理,加載此模塊(不推薦),否則注釋掉
#LoadModule include_module modules/mod_include.so
#如果需要根據(jù)上下文實(shí)際情況對(duì)輸出過濾器進(jìn)行動(dòng)態(tài)配置,加載此模塊,否則注釋掉
LoadModule filter_module modules/mod_filter.so
#如果需要服務(wù)器在將輸出內(nèi)容發(fā)送到客戶端以前進(jìn)行壓縮以節(jié)約帶寬,加載此模塊(推薦),否則注釋掉
LoadModule deflate_module modules/mod_deflate.so
##如果需要記錄日志和定制日志文件格式,加載此模塊(推薦),否則注釋掉
LoadModule log_config_module modules/mod_log_config.so
#如果需要對(duì)每個(gè)請(qǐng)求的輸入/輸出字節(jié)數(shù)以及HTTP頭進(jìn)行日志記錄,加載此模塊,否則注釋掉
#LoadModule logio_module modules/mod_logio.so
#如果允許Apache修改或清除傳送到CGI腳本和SSI頁面的環(huán)境變量,加載此模塊,否則注釋掉
LoadModule env_module modules/mod_env.so
#如果允許通過配置文件控制HTTP的"Expires:"和"Cache-Control:"頭內(nèi)容,加載此模塊(推薦),否則注釋掉
LoadModule expires_module modules/mod_expires.so
#如果允許通過配置文件控制任意的HTTP請(qǐng)求和應(yīng)答頭信息,加載此模塊,否則注釋掉
LoadModule headers_module modules/mod_headers.so
#如果需要實(shí)現(xiàn)RFC1413規(guī)定的ident查找,加載此模塊(不推薦),否則注釋掉
#LoadModule ident_module modules/mod_ident.so
#如果需要根據(jù)客戶端請(qǐng)求頭字段設(shè)置環(huán)境變量,加載此模塊,否則注釋掉
LoadModule setenvif_module modules/mod_setenvif.so
#此模塊是mod_proxy的擴(kuò)展,提供Apache JServ Protocol支持,只在必要時(shí)加載
#LoadModule proxy_ajp_module modules/mod_proxy_ajp.so
#此模塊是mod_proxy的擴(kuò)展,提供負(fù)載均衡支持,只在必要時(shí)加載
#LoadModule proxy_balancer_module modules/mod_proxy_balancer.so
#如果需要根據(jù)文件擴(kuò)展名決定應(yīng)答的行為(處理器/過濾器)和內(nèi)容(MIME類型/語言/字符集/編碼),加載此模塊,否則注釋掉
LoadModule mime_module modules/mod_mime.so
#如果允許Apache提供DAV協(xié)議支持,加載此模塊,否則注釋掉
#LoadModule dav_module modules/mod_dav.so
#此模塊生成描述服務(wù)器狀態(tài)的Web頁面,只建議在追蹤服務(wù)器性能和問題時(shí)加載
#LoadModule status_module modules/mod_status.so
#如果需要自動(dòng)對(duì)目錄中的內(nèi)容生成列表(類似于"ls"或"dir"命令),加載此模塊(會(huì)帶來安全問題,不推薦),否則注釋掉
#LoadModule autoindex_module modules/mod_autoindex.so
#如果需要服務(wù)器發(fā)送自己包含HTTP頭內(nèi)容的文件,加載此模塊,否則注釋掉
#LoadModule asis_module modules/mod_asis.so
#如果需要生成Apache配置情況的Web頁面,加載此模塊(會(huì)帶來安全問題,不推薦),否則注釋掉
#LoadModule info_module modules/mod_info.so
#如果需要在非線程型MPM(prefork)上提供對(duì)CGI腳本執(zhí)行的支持,加載此模塊,否則注釋掉
#LoadModule cgi_module modules/mod_cgi.so
#此模塊在線程型MPM(worker)上用一個(gè)外部CGI守護(hù)進(jìn)程執(zhí)行CGI腳本,如果正在多線程模式下使用CGI程序,推薦替換mod_cgi加載,否則注釋掉
#LoadModule cgid_module modules/mod_cgid.so
#此模塊為mod_dav訪問服務(wù)器上的文件系統(tǒng)提供支持,如果加載mod_dav,則也應(yīng)加載此模塊,否則注釋掉
#LoadModule dav_fs_module modules/mod_dav_fs.so
#如果需要提供大批量虛擬主機(jī)的動(dòng)態(tài)配置支持,加載此模塊,否則注釋掉
#LoadModule vhost_alias_module modules/mod_vhost_alias.so
#如果需要提供內(nèi)容協(xié)商支持(從幾個(gè)有效文檔中選擇一個(gè)最匹配客戶端要求的文檔),加載此模塊(推薦),否則注釋掉
LoadModule negotiation_module modules/mod_negotiation.so
#如果需要指定目錄索引文件以及為目錄提供"尾斜杠"重定向,加載此模塊(推薦),否則注釋掉
LoadModule dir_module modules/mod_dir.so
#如果需要處理服務(wù)器端圖像映射,加載此模塊,否則注釋掉
#LoadModule imagemap_module modules/mod_imagemap.so
#如果需要針對(duì)特定的媒體類型或請(qǐng)求方法執(zhí)行CGI腳本,加載此模塊,否則注釋掉
#LoadModule actions_module modules/mod_actions.so
#如果希望服務(wù)器自動(dòng)糾正URL中的拼寫錯(cuò)誤,加載此模塊(推薦),否則注釋掉
LoadModule speling_module modules/mod_speling.so
#如果允許在URL中通過"/~username"形式從用戶自己的主目錄中提供頁面,加載此模塊,否則注釋掉
#LoadModule userdir_module modules/mod_userdir.so
#此模塊提供從文件系統(tǒng)的不同部分到文檔樹的映射和URL重定向,推薦加載
LoadModule alias_module modules/mod_alias.so
#如果需要基于一定規(guī)則實(shí)時(shí)重寫URL請(qǐng)求,加載此模塊(推薦),否則注釋掉
LoadModule rewrite_module modules/mod_rewrite.so
DocumentRoot "/usr/local/apache-2.2.6/htdocs"
#設(shè)置WEB文檔根目錄的默認(rèn)屬性
<Directory />
Options FollowSymLinks
AllowOverride None
Order deny,allow
Deny from all
</Directory>
#設(shè)置DocumentRoot指定目錄的屬性
<Directory "/usr/local/apache-2.2.6/htdocs">
Options FollowSymLinks
AllowOverride None
Order allow,deny
Allow from all
</Directory>
#設(shè)置默認(rèn)目錄資源列表文件
<IfModule dir_module>
DirectoryIndex index.html
</IfModule>
#拒絕對(duì).ht開頭文件的訪問,以保護(hù).htaccess文件
<FilesMatch "^\.ht">
Order allow,deny
Deny from all
Satisfy All
</FilesMatch>
<IfModule log_config_module>
#定義訪問日志的格式
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\"" combined
LogFormat "%h %l %u %t \"%r\" %>s %b" common
<IfModule logio_module>
LogFormat "%h %l %u %t \"%r\" %>s %b \"%{Referer}i\" \"%{User-Agent}i\" %I %O" combinedio
</IfModule>
#指定訪問日志及使用的格式
CustomLog logs/access_log combined
</IfModule>
#設(shè)定默認(rèn)CGI腳本目錄及別名
ScriptAlias /cgi-bin/ "/usr/local/apache-2.2.6/cgi-bin/"
#在以線程式MPM(worker)運(yùn)行的Apache中設(shè)置用來與CGI守護(hù)進(jìn)程通信的套接字文件名前綴
<IfModule cgid_module>
Scriptsock logs/cgisock
</IfModule>
#設(shè)定默認(rèn)CGI腳本目錄的屬性
<Directory "/usr/local/apache-2.2.6/cgi-bin">
AllowOverride None
Options None
Order allow,deny
Allow from all
</Directory>
#設(shè)定默認(rèn)MIME內(nèi)容類型
DefaultType text/plain
<IfModule mime_module>
##指定MIME類型映射文件
TypesConfig conf/mime.types
#增加.Z .tgz的類型映射
AddType application/x-compress .Z
AddType application/x-gzip .gz .tgz
</IfModule>
#啟用內(nèi)存映射
EnableMMAP on
##使用操作系統(tǒng)內(nèi)核的sendfile支持來將文件發(fā)送到客戶端
EnableSendfile on
#指定多路處理模塊(MPM)配置文件并將其附加到主配置文件
Include conf/extra/httpd-mpm.conf
#指定多語言錯(cuò)誤應(yīng)答配置文件并將其附加到主配置文件
Include conf/extra/httpd-multilang-errordoc.conf
#指定目錄列表配置文件并將其附加到主配置文件
#Include conf/extra/httpd-autoindex.conf
#指定語言配置文件并將其附加到主配置文件
Include conf/extra/httpd-languages.conf
#指定用戶主目錄配置文件并將其附加到主配置文件
#Include conf/extra/httpd-userdir.conf
#指定用于服務(wù)器信息和狀態(tài)顯示的配置文件并將其附加到主配置文件
#Include conf/extra/httpd-info.conf
#指定提供Apache文檔訪問的配置文件并將其附加到配置文件
#Include conf/extra/httpd-manual.conf
#指定DAV配置文件并將其附加到主配置文件
#Include conf/extra/httpd-dav.conf
#指定與Apache服務(wù)自身相關(guān)的配置文件并將其附加到主配置文件
Include conf/extra/httpd-default.conf
#指定mod_deflate壓縮模塊配置文件并將其附加到主配置文件
Include conf/extra/httpd-deflate.conf
#指定mod_expires模塊配置文件并將其附加到主配置文件
Include conf/extra/httpd-expires.conf
##指定虛擬主機(jī)配置文件并將其附加到主配置文件
#Include conf/extra/httpd-vhosts.conf
#指定SSL配置文件并將其附加到主配置文件
Include conf/extra/httpd-ssl.conf
##SSL默認(rèn)配置
<IfModule ssl_module>
SSLRandomSeed startup builtin
SSLRandomSeed connect builtin
</IfModule>
#配置多路處理模塊(MPM) httpd-mpm.conf
首先說一下原理:
prefork模式
這個(gè)多路處理模塊(MPM)實(shí)現(xiàn)了一個(gè)非線程型的、預(yù)派生的web服務(wù)器,它的工作方式類似于Apache 1.3。它適合于沒有線程安全庫,需要避免線程兼容性問題的系統(tǒng)。它是要求將
每個(gè)請(qǐng)求相互獨(dú)立的情況下最好的MPM,這樣若一個(gè)請(qǐng)求出現(xiàn)問題就不會(huì)影響到其他請(qǐng)求。
這個(gè)MPM具有很強(qiáng)的自我調(diào)節(jié)能力,只需要很少的配置指令調(diào)整。最重要的是將MaxClients設(shè)置為一個(gè)足夠大的數(shù)值以處理潛在的請(qǐng)求高峰,同時(shí)又不能太大,以致需要使用的內(nèi)存
超出物理內(nèi)存的大小。
worker模式
此多路處理模塊(MPM)使網(wǎng)絡(luò)服務(wù)器支持混合的多線程多進(jìn)程。由于使用線程來處理請(qǐng)求,所以可以處理海量請(qǐng)求,而系統(tǒng)資源的開銷小于基于進(jìn)程的MPM。但是,它也使用了多進(jìn)
程,每個(gè)進(jìn)程又有多個(gè)線程,以獲得基于進(jìn)程的MPM的穩(wěn)定性。
控制這個(gè)MPM的最重要的指令是,控制每個(gè)子進(jìn)程允許建立的線程數(shù)的ThreadsPerChild指令,和控制允許建立的總線程數(shù)的MaxClients指令
#設(shè)置prefork多路處理模塊
<IfModule mpm_prefork_module>
StartServers 5
MinSpareServers 5
MaxSpareServers 10
ServerLimit 8000
MaxClients 8000
MaxRequestsPerChild 0
</IfModule>
StartServers:設(shè)置服務(wù)器啟動(dòng)時(shí)建立的子進(jìn)程數(shù)量。因?yàn)樽舆M(jìn)程數(shù)量動(dòng)態(tài)的取決于負(fù)載的輕重,所有一般沒有必要調(diào)整這個(gè)參數(shù)。
MinSpareServers:設(shè)置空閑子進(jìn)程的最小數(shù)量。所謂空閑子進(jìn)程是指沒有正在處理請(qǐng)求的子進(jìn)程。如果當(dāng)前空閑子進(jìn)程數(shù)少于 MinSpareServers ,那么Apache將以最大每秒一個(gè)的
速度產(chǎn)生新的子進(jìn)程。只有在非常繁忙機(jī)器上才需要調(diào)整這個(gè)參數(shù)。將此參數(shù)設(shè)的太大通常是一個(gè)壞主意。
MaxSpareServers:設(shè)置空閑子進(jìn)程的最大數(shù)量。如果當(dāng)前有超過MaxSpareServers數(shù)量的空閑子進(jìn)程,那么父進(jìn)程將殺死多余的子進(jìn)程。只有在非常繁忙機(jī)器上才需要調(diào)整這個(gè)參數(shù)
。將此參數(shù)設(shè)的太大通常是一個(gè)壞主意。如果你將該指令的值設(shè)置為比MinSpareServers 小,Apache將會(huì)自動(dòng)將其修改成"MinSpareServers+1"。
ServerLimit:服務(wù)器允許配置的進(jìn)程數(shù)上限。只有在你需要將MaxClients設(shè)置成高于默認(rèn)值256的時(shí)候才需要使用。要將此指令的值保持和MaxClients一樣。修改此指令的值必須
完全停止服務(wù)后再啟動(dòng)才能生效,以restart方式重啟動(dòng)將不會(huì)生效。
MaxClients:用于伺服客戶端請(qǐng)求的最大請(qǐng)求數(shù)量(最大子進(jìn)程數(shù)),任何超過MaxClients限制的請(qǐng)求都將進(jìn)入等候隊(duì)列。默認(rèn)值是256,如果要提高這個(gè)值必須同時(shí)提高
ServerLimit的值。筆者建議將初始值設(shè)為(以Mb為單位的最大物理內(nèi)存/2),然后根據(jù)負(fù)載情況進(jìn)行動(dòng)態(tài)調(diào)整。比如一臺(tái)4G內(nèi)存的機(jī)器,那么初始值就是4000/2=2000。
MaxRequestsPerChild:設(shè)置每個(gè)子進(jìn)程在其生存期內(nèi)允許伺服的最大請(qǐng)求數(shù)量。到達(dá)MaxRequestsPerChild的限制后,子進(jìn)程將會(huì)結(jié)束。如果MaxRequestsPerChild為"0",子進(jìn)程
將永遠(yuǎn)不會(huì)結(jié)束。將MaxRequestsPerChild設(shè)置成非零值有兩個(gè)好處:可以防止(偶然的)內(nèi)存泄漏無限進(jìn)行而耗盡內(nèi)存;
給進(jìn)程一個(gè)有限壽命,從而有助于當(dāng)服務(wù)器負(fù)載減輕的時(shí)候減少活動(dòng)進(jìn)程的數(shù)量。
如果設(shè)置為非零值,建議設(shè)為10000-30000之間的一個(gè)值。
公式:MaxClients<=ServerLimit
#設(shè)置worker多路處理模塊
<IfModule mpm_worker_module>
StartServers 5
ServerLimit 20
ThreadLimit 200
MaxClients 4000
MinSpareThreads 25
MaxSpareThreads 250
ThreadsPerChild 200
MaxRequestsPerChild 0
</IfModule>
StartServers:設(shè)置服務(wù)器啟動(dòng)時(shí)建立的子進(jìn)程數(shù)量。因?yàn)樽舆M(jìn)程數(shù)量動(dòng)態(tài)的取決于負(fù)載的輕重,所有一般沒有必要調(diào)整這個(gè)參數(shù)。
ServerLimit:服務(wù)器允許配置的進(jìn)程數(shù)上限。只有在你需要將MaxClients和ThreadsPerChild設(shè)置成需要超過默認(rèn)值16個(gè)子進(jìn)程的時(shí)候才需要使用這個(gè)指令。不要將該指令的值設(shè)
置的比MaxClients 和ThreadsPerChild需要的子進(jìn)程數(shù)量高。修改此指令的值必須完全停止服務(wù)后再啟動(dòng)才能生效,以restart方式重啟動(dòng)將不會(huì)生效。
ThreadLimit:設(shè)置每個(gè)子進(jìn)程可配置的線程數(shù)ThreadsPerChild上限,該指令的值應(yīng)當(dāng)和ThreadsPerChild可能達(dá)到的最大值保持一致。修改此指令的值必須完全停止服務(wù)后再啟動(dòng)
才能生效,以restart方式重啟動(dòng)將不會(huì)生效。
MaxClients:用于伺服客戶端請(qǐng)求的最大接入請(qǐng)求數(shù)量(最大線程數(shù))。任何超過MaxClients限制的請(qǐng)求都將進(jìn)入等候隊(duì)列。默認(rèn)值是"400",16 (ServerLimit)乘以25
(ThreadsPerChild)的結(jié)果。因此要增加MaxClients的時(shí)候,你必須同時(shí)增加 ServerLimit的值。筆者建議將初始值設(shè)為(以Mb為單位的最大物理內(nèi)存/2),然后根據(jù)負(fù)載情況進(jìn)行動(dòng)
態(tài)調(diào)整。比如一臺(tái)4G內(nèi)存的機(jī)器,那么初始值就是4000/2=2000。
MinSpareThreads:最小空閑線程數(shù),默認(rèn)值是"75"。這個(gè)MPM將基于整個(gè)服務(wù)器監(jiān)視空閑線程數(shù)。如果服務(wù)器中總的空閑線程數(shù)太少,子進(jìn)程將產(chǎn)生新的空閑線程。
MaxSpareThreads:設(shè)置最大空閑線程數(shù)。默認(rèn)值是"250"。這個(gè)MPM將基于整個(gè)服務(wù)器監(jiān)視空閑線程數(shù)。如果服務(wù)器中總的空閑線程數(shù)太多,子進(jìn)程將殺死多余的空閑線程。
MaxSpareThreads的取值范圍是有限制的。Apache將按照如下限制自動(dòng)修正你設(shè)置的值:worker要求其大于等于 MinSpareThreads加上ThreadsPerChild的和。
ThreadsPerChild:每個(gè)子進(jìn)程建立的線程數(shù)。默認(rèn)值是25。子進(jìn)程在啟動(dòng)時(shí)建立這些線程后就不再建立新的線程了。每個(gè)子進(jìn)程所擁有的所有線程的總數(shù)要足夠大,以便可以處理
可能的請(qǐng)求高峰。
轉(zhuǎn)載請(qǐng)注明本頁網(wǎng)址:
http://www.snjht.com/jiaocheng/26_3.html