亚洲国产日韩欧美一区二区三区,精品亚洲国产成人av在线,国产99视频精品免视看7,99国产精品久久久久久久成人热,欧美日韩亚洲国产综合乱

directory search
首頁 版本說明 從1.3升級到2.0 編譯時配置的改變 運行時配置的改變 雜項變化 第三方模塊 從 2.0 升級到 2.2 編譯時配置的改變 運行時配置的改變 雜項變化 第三方模塊 Apache 2.1/2.2 版本的新特性 核心增強 模塊增強 程序增強 針對模塊開發(fā)者的變化 Apache 2.0 版本的新特性 核心的增強 模塊的增強 Apache許可證 參考手冊 編譯與安裝 針對心急者的概述 要求 下載 解壓 配置源代碼樹 編譯 安裝 配置 測試 升級 啟動 Apache是怎樣啟動的 啟動時發(fā)生錯誤 隨系統(tǒng)啟動時啟動 額外信息 停止與重新啟動 簡介 立即停止 優(yōu)雅重啟 立即重啟 優(yōu)雅停止 附錄:信號和競爭條件 運行時配置指令 主配置文件 配置文件的語法 模塊 指令的作用域 .htaccess文件 配置段 配置段(容器)的類型 文件系統(tǒng)和網(wǎng)絡(luò)空間 虛擬主機 代理 允許使用哪些指令? 配置段的合并 內(nèi)容緩沖 簡介 緩沖概述 安全方面的考慮 文件句柄緩沖 內(nèi)存緩沖 磁盤緩沖 服務(wù)器全局配置 服務(wù)器標(biāo)識 文件定位 限制資源的使用 日志文件 安全警告 錯誤日志 訪問日志 日志滾動 管道日志 虛擬主機 其他日志文件 從URL到文件系統(tǒng)的映射 相關(guān)模塊和指令 DocumentRoot DocumentRoot以外的文件 用戶目錄 URL重定向 反向代理 重寫引擎 File Not Found 安全方面的提示 保持不斷更新和升級 ServerRoot目錄的權(quán)限 服務(wù)器端包含 關(guān)于CGI 未指定為腳本的CGI 指定為腳本的CGI 其他動態(tài)內(nèi)容的來源 系統(tǒng)設(shè)置的保護 默認(rèn)配置下服務(wù)器文件的保護 觀察日志文件 動態(tài)共享對象(DSO) 實現(xiàn) 用法概要 背景知識 優(yōu)點和缺點 內(nèi)容協(xié)商 關(guān)于內(nèi)容協(xié)商 Apache中的內(nèi)容協(xié)商 協(xié)商的方法 打亂品質(zhì)值 透明內(nèi)容協(xié)商的擴展 超鏈和名稱轉(zhuǎn)換說明 緩沖說明 更多信息 自定義錯誤響應(yīng) 行為 配置 自定義錯誤響應(yīng)與重定向 地址和端口綁定 概述 針對IPv6的特殊考慮 怎樣與虛擬主機協(xié)同工作 多路處理模塊(MPM) 簡介 選擇一個MPM 默認(rèn)的MPM 環(huán)境變量 設(shè)置環(huán)境變量 使用環(huán)境變量 用于特殊目的的環(huán)境變量 示例 處理器的使用 什么是處理器? 例子 程序員注意事項 過濾器 Apache2中的過濾器 智能過慮 使用過濾器 CGI腳本的Suexec執(zhí)行 開始之前 suEXEC的安全模型 配置和安裝suEXEC 啟用和禁用suEXEC 使用suEXEC 調(diào)試suEXEC 謹(jǐn)防Jabberwock:警告和舉例 性能調(diào)整 硬件和操作系統(tǒng) 運行時的配置 編譯時的配置 附錄:蹤跡的詳細(xì)分析 URL重寫指南 mod_rewrite簡介 實踐方案 URL的規(guī)劃 內(nèi)容的處理 對訪問的限制 其他 虛擬主機文檔 總述 虛擬主機支持 配置指令 基于主機名的虛擬主機 基于域名的虛擬主機和基于IP的虛擬主機比較 使用基于域名的虛擬主機 與舊版瀏覽器的兼容性 基于IP地址的虛擬主機 系統(tǒng)需求 如何配置Apache 設(shè)置多個守護進程 配置擁有多個虛擬主機的單一守護進程 動態(tài)配置大量虛擬主機 動機 概述 簡單的動態(tài)虛擬主機 一個實際的個人主頁系統(tǒng) 在同一個服務(wù)器上架設(shè)多個主機的虛擬系統(tǒng) 更為有效的基于IP地址的虛擬主機 使用老版本的Apache 使用mod_rewrite實現(xiàn)簡單的動態(tài)虛擬主機 使用mod_rewrite的個人主頁系統(tǒng) 使用獨立的虛擬主機配置文件 虛擬主機的普通配置示例 在一個IP地址上運行多個基于域名的web站點 在多于一個IP的情況下使用基于域名的虛擬主機 在不同的IP的地址(比如一個內(nèi)部和一個外部地址)上提供相同的內(nèi)容 在不同的端口上運行不同的站點 建立基于IP的虛擬主機 混用基于端口和基于IP的虛擬主機 混用基于域名和基于IP的虛擬主機 將虛擬主機和代理模塊一起使用 使用默認(rèn)虛擬主機 將一個基于域名的虛擬主機移植為一個基于IP的虛擬主機 使用ServerPath指令 深入討論虛擬主機的匹配 解析配置文件 虛擬主機匹配 小技巧 文件描述符限制 關(guān)于DNS和Apache 一個簡單示例 拒絕服務(wù) "主服務(wù)器"地址 避免這些問題的小技巧 附錄:進一步的提示 常見問題 概述 SSL/TLS 加密 概述 文檔 mod_ssl 緒論 密碼技術(shù) 證書 安全套接字層(SSL) 參考 兼容性 配置指令 環(huán)境變量 自定義日志功能 如何... 加密方案和強制性高等級安全 客戶認(rèn)證和訪問控制 常見問題解答 About The Module Installation Configuration Certificates The SSL Protocol mod_ssl Support 如何.../指南 概述 認(rèn)證 相關(guān)模塊和指令 簡介 先決條件 啟用認(rèn)證 允許多人訪問 可能存在的問題 其他認(rèn)證方法 更多信息 CGI動態(tài)頁面 簡介 配置Apache以允許CGI 編寫CGI程序 程序還是不能運行! 幕后是怎樣操作的? CGI模塊/庫 更多信息 服務(wù)器端包含 簡介 什么是SSI? 配置服務(wù)器以允許SSI 基本SSI指令 附加的例子 我還能設(shè)置其它什么? 執(zhí)行命令 高級SSI技術(shù) 總結(jié) .htaccess文件 .htaccess文件 工作原理和使用方法 (不)使用.htaccess文件的場合 指令的生效 認(rèn)證舉例 服務(wù)器端包含(SSI)舉例 CGI舉例 疑難解答 用戶網(wǎng)站目錄 用戶網(wǎng)站目錄 用UserDir設(shè)置文件路徑 限定哪些用戶可以使用此功能 啟用對每個用戶都有效的cgi目錄 允許用戶改變配置 對特定平臺的說明 概述 Microsoft Windows 其他平臺 在Microsoft Windows中使用Apache 對操作系統(tǒng)的要求 下載 Apache for Windows 安裝 Apache for Windows 配置 Apache for Windows 以服務(wù)方式運行 Apache for Windows 作為控制臺程序運行Apache 測試安裝 編譯Windows下的Apache 系統(tǒng)要求 命令行編譯 Developer Studio集成開發(fā)環(huán)境的工作區(qū)編譯 項目組件 在Novell NetWare平臺上使用Apache Requirements Downloading Apache for NetWare Installing Apache for NetWare Running Apache for NetWare Configuring Apache for NetWare Compiling Apache for NetWare 在HP-UX中運行Apache The Apache EBCDIC Port Overview of the Apache EBCDIC Port Design Goals Technical Solution Porting Notes Document Storage Notes Apache Modules' Status Third Party Modules' Status 服務(wù)器與支持程序 概述 httpd 語法 選項 ab 語法 選項 Bugs apachectl 語法 選項 apxs 語法 選項 舉例 configure 語法 選項 環(huán)境變量 dbmmanage 語法 選項 Bugs htcacheclean 語法 選項 返回值 htdbm 語法 選項 Bugs 返回值 舉例 安全方面的考慮 限制 htdigest 語法 選項 htpasswd 語法 選項 返回值 舉例 安全方面的考慮 限制 logresolve 語法 選項 rotatelogs 語法 選項 Portability suexec 語法 選項 其他程序 log_server_status split-logfile 雜項文檔 概述 相關(guān)標(biāo)準(zhǔn) HTTP推薦標(biāo)準(zhǔn) HTML推薦標(biāo)準(zhǔn) 認(rèn)證 語言/國家代碼 Apache 模塊 描述模塊的術(shù)語 說明 狀態(tài) 源代碼文件 模塊標(biāo)識符 兼容性 描述指令的術(shù)語 說明 語法 默認(rèn)值(Default) 作用域(Context) 覆蓋項(Override) 狀態(tài) 模塊(Module) 兼容性(Compatibility) Apache核心(Core)特性 AcceptFilter AcceptPathInfo AccessFileName AddDefaultCharset AddOutputFilterByType AllowEncodedSlashes AllowOverride AuthName AuthType CGIMapExtension ContentDigest DefaultType <Directory> <DirectoryMatch> DocumentRoot EnableMMAP EnableSendfile ErrorDocument ErrorLog FileETag <Files> <FilesMatch> ForceType HostnameLookups <IfDefine> <IfModule> Include KeepAlive KeepAliveTimeout <Limit> <LimitExcept> LimitInternalRecursion LimitRequestBody LimitRequestFields LimitRequestFieldSize LimitRequestLine LimitXMLRequestBody <Location> <LocationMatch> LogLevel MaxKeepAliveRequests NameVirtualHost Options Require RLimitCPU RLimitMEM RLimitNPROC Satisfy ScriptInterpreterSource ServerAdmin ServerAlias ServerName ServerPath ServerRoot ServerSignature ServerTokens SetHandler SetInputFilter SetOutputFilter TimeOut TraceEnable UseCanonicalName UseCanonicalPhysicalPort <VirtualHost> Apache MPM 公共指令 AcceptMutex CoreDumpDirectory EnableExceptionHook GracefulShutdownTimeout Group Listen ListenBackLog LockFile MaxClients MaxMemFree MaxRequestsPerChild MaxSpareThreads MinSpareThreads PidFile ReceiveBufferSize ScoreBoardFile SendBufferSize ServerLimit StartServers StartThreads ThreadLimit ThreadsPerChild ThreadStackSize User Apache MPM beos MaxRequestsPerThread CoreDumpDirectory Group Listen ListenBacklog MaxClients MaxMemFree MaxSpareThreads MinSpareThreads PidFile ReceiveBufferSize ScoreBoardFile SendBufferSize StartThreads User Apache MPM event AcceptMutex CoreDumpDirectory EnableExceptionHook Group Listen ListenBacklog LockFile MaxClients MaxMemFree MaxRequestsPerChild MaxSpareThreads MinSpareThreads PidFile ScoreBoardFile SendBufferSize ServerLimit StartServers ThreadLimit ThreadsPerChild ThreadStackSize User Apache MPM netware MaxThreads Listen ListenBacklog MaxMemFree MaxRequestsPerChild MaxSpareThreads MinSpareThreads ReceiveBufferSize SendBufferSize StartThreads ThreadStackSize Apache MPM os2 Group Listen ListenBacklog MaxRequestsPerChild MaxSpareThreads MinSpareThreads PidFile ReceiveBufferSize SendBufferSize StartServers User Apache MPM prefork 工作方式 MaxSpareServers MinSpareServers AcceptMutex CoreDumpDirectory EnableExceptionHook Group Listen ListenBacklog LockFile MaxClients MaxMemFree MaxRequestsPerChild PidFile ReceiveBufferSize ScoreBoardFile SendBufferSize ServerLimit StartServers User Apache MPM winnt Win32DisableAcceptEx CoreDumpDirectory Listen ListenBacklog MaxMemFree MaxRequestsPerChild PidFile ReceiveBufferSize ScoreBoardFile SendBufferSize ThreadLimit ThreadsPerChild ThreadStackSize Apache MPM worker 工作方式 AcceptMutex CoreDumpDirectory EnableExceptionHook Group Listen ListenBacklog LockFile MaxClients MaxMemFree MaxRequestsPerChild MaxSpareThreads MinSpareThreads PidFile ReceiveBufferSize ScoreBoardFile SendBufferSize ServerLimit StartServers ThreadLimit ThreadsPerChild ThreadStackSize User Apache Module mod_actions Action指令 Script指令 Apache Module mod_alias 處理順序 Alias AliasMatch Redirect RedirectMatch RedirectPermanent RedirectTemp ScriptAlias ScriptAliasMatch Apache Module mod_asis 用法 Apache Module mod_auth_basic AuthBasicAuthoritative AuthBasicProvider Apache Module mod_auth_digest 使用摘要認(rèn)證 配合 MS Internet Explorer 6 工作 AuthDigestAlgorithm AuthDigestDomain AuthDigestNcCheck AuthDigestNonceFormat AuthDigestNonceLifetime AuthDigestProvider AuthDigestQop AuthDigestShmemSize Apache Module mod_authn_alias 示例 <AuthnProviderAlias> Apache Module mod_authn_anon 示例 Anonymous Anonymous_LogEmail Anonymous_MustGiveEmail Anonymous_NoUserID Anonymous_VerifyEmail Apache Module mod_authn_dbd 配置示例 AuthDBDUserPWQuery AuthDBDUserRealmQuery Apache Module mod_authn_dbm AuthDBMType AuthDBMUserFile Apache Module mod_authn_default AuthDefaultAuthoritative Apache Module mod_authn_file AuthUserFile Apache Module mod_authnz_ldap Contents Operation The require Directives 舉例 Using TLS Using SSL Using Microsoft FrontPage with mod_authnz_ldap AuthLDAPBindDN AuthLDAPBindPassword AuthLDAPCharsetConfig AuthLDAPCompareDNOnServer AuthLDAPDereferenceAliases AuthLDAPGroupAttribute AuthLDAPGroupAttributeIsDN AuthLDAPRemoteUserIsDN AuthLDAPUrl AuthzLDAPAuthoritative Apache Module mod_authz_dbm AuthDBMGroupFile AuthzDBMAuthoritative AuthzDBMType Apache Module mod_authz_default AuthzDefaultAuthoritative Apache Module mod_authz_groupfile AuthGroupFile AuthzGroupFileAuthoritative Apache Module mod_authz_host Allow Deny Order Apache Module mod_authz_owner 配置示例 AuthzOwnerAuthoritative Apache Module mod_authz_user AuthzUserAuthoritative Apache Module mod_autoindex Autoindex Request Query Arguments AddAlt AddAltByEncoding AddAltByType AddDescription AddIcon AddIconByEncoding AddIconByType DefaultIcon HeaderName IndexIgnore IndexOptions IndexOrderDefault IndexStyleSheet ReadmeName Apache Module mod_cache Related Modules and Directives 配置示例 CacheDefaultExpire CacheDisable CacheEnable CacheIgnoreCacheControl CacheIgnoreHeaders CacheIgnoreNoLastMod CacheLastModifiedFactor CacheMaxExpire CacheStoreNoStore CacheStorePrivate Apache Module mod_cern_meta MetaDir MetaFiles MetaSuffix Apache Module mod_cgi CGI 環(huán)境變量 CGI 腳本的調(diào)試 ScriptLog ScriptLogBuffer ScriptLogLength Apache Module mod_cgid ScriptSock ScriptLog ScriptLogBuffer ScriptLogLength Apache Module mod_charset_lite Common Problems CharsetDefault CharsetOptions CharsetSourceEnc Apache Module mod_dav Enabling WebDAV Security Issues Complex Configurations Dav DavDepthInfinity DavMinTimeout Apache Module mod_dav_fs DavLockDB Apache Module mod_dav_lock DavGenericLockDB Apache Module mod_dbd Connection Pooling Apache DBD API SQL Prepared Statements DBDExptime DBDKeep DBDMax DBDMin DBDParams DBDPersist DBDPrepareSQL DBDriver Apache Module mod_deflate 配置舉例 啟用壓縮 代理服務(wù)器 DeflateBufferSize DeflateCompressionLevel DeflateFilterNote DeflateMemLevel DeflateWindowSize Apache Module mod_dir DirectoryIndex DirectorySlash Apache Module mod_disk_cache CacheDirLength CacheDirLevels CacheMaxFileSize CacheMinFileSize CacheRoot Apache Module mod_dumpio 啟用dumpio支持 DumpIOInput DumpIOOutput Apache Module mod_echo ProtocolEcho Apache Module mod_env PassEnv SetEnv UnsetEnv Apache Module mod_example Compiling the example module Using the mod_example Module Example Apache Module mod_expires 交替間隔語法 ExpiresActive ExpiresByType ExpiresDefault Apache Module mod_ext_filter 舉例 ExtFilterDefine ExtFilterOptions Apache Module mod_file_cache Using mod_file_cache CacheFile MMapFile Apache Module mod_filter Smart Filtering Filter Declarations Configuring the Chain Examples Protocol Handling FilterChain FilterDeclare FilterProtocol FilterProvider FilterTrace Apache Module mod_headers 處理順序 前處理和后處理 舉例 Header RequestHeader Apache Module mod_ident IdentityCheck IdentityCheckTimeout Apache Module mod_imagemap New Features Imagemap File Example Mapfile Referencing your mapfile ImapBase ImapDefault ImapMenu Apache Module mod_include Enabling Server-Side Includes PATH_INFO with Server Side Includes Basic Elements Include Variables Variable Substitution Flow Control Elements SSIEndTag SSIErrorMsg SSIStartTag SSITimeFormat SSIUndefinedEcho XBitHack Apache Module mod_info 安全問題 選擇哪些信息可以被顯示 已知的局限 AddModuleInfo Apache Module mod_isapi 用法 附加注釋 程序員注記 ISAPIAppendLogToErrors ISAPIAppendLogToQuery ISAPICacheFile ISAPIFakeAsync ISAPILogNotSupported ISAPIReadAheadBuffer Apache Module mod_ldap 示例配置 LDAP 連接池 LDAP 緩沖 使用SSL/TLS SSL/TLS 證書 LDAPCacheEntries LDAPCacheTTL LDAPConnectionTimeout LDAPOpCacheEntries LDAPOpCacheTTL LDAPSharedCacheFile LDAPSharedCacheSize LDAPTrustedClientCert LDAPTrustedGlobalCert LDAPTrustedMode LDAPVerifyServerCert Apache Module mod_log_config 定制日志文件格式 安全考慮 BufferedLogs CookieLog CustomLog LogFormat TransferLog Apache Module mod_log_forensic 定制日志文件格式 安全考慮 ForensicLog Apache Module mod_logio 定制日志文件格式 Apache Module mod_mem_cache MCacheMaxObjectCount MCacheMaxObjectSize MCacheMaxStreamingBuffer MCacheMinObjectSize MCacheRemovalAlgorithm MCacheSize Apache Module mod_mime 帶多擴展名的文件 內(nèi)容編碼 字符集和語言 AddCharset AddEncoding AddHandler AddInputFilter AddLanguage AddOutputFilter AddType DefaultLanguage ModMimeUsePathInfo MultiviewsMatch RemoveCharset RemoveEncoding RemoveHandler RemoveInputFilter RemoveLanguage RemoveOutputFilter RemoveType TypesConfig Apache Module mod_mime_magic "Magic文件"的格式 性能問題 注意 MimeMagicFile Apache Module mod_negotiation 類型表 MultiViews CacheNegotiatedDocs ForceLanguagePriority LanguagePriority Apache Module mod_nw_ssl NWSSLTrustedCerts NWSSLUpgradeable SecureListen Apache Module mod_proxy 正向和反向代理 簡單示例 控制對代理服務(wù)器的訪問 緩慢啟動 局域網(wǎng)代理 協(xié)議調(diào)整 請求體 AllowCONNECT NoProxy <Proxy> ProxyBadHeader ProxyBlock ProxyDomain ProxyErrorOverride ProxyIOBufferSize <ProxyMatch> ProxyMaxForwards ProxyPass ProxyPassReverse ProxyPassReverseCookieDomain ProxyPassReverseCookiePath ProxyPreserveHost ProxyReceiveBufferSize ProxyRemote ProxyRemoteMatch ProxyRequests ProxyTimeout ProxyVia Apache Module mod_proxy_ajp Overview of the protocol Basic Packet Structure Request Packet Structure Response Packet Structure Apache Module mod_proxy_balancer Load balancer scheduler algorithm Request Counting Algorithm Weighted Traffic Counting Algorithm Enabling Balancer Manager Support Apache Module mod_proxy_connect Apache Module mod_proxy_ftp 為什么xxx類型的文件不能從FTP下載? 如何強制文件xxx使用FTP的ASCII形式下載? 我如何使用FTP上傳? 我如何能訪問我自己home目錄以外的FTP文件? 我如何才能在瀏覽器的URL框中隱藏FTP的明文密碼? Apache Module mod_proxy_http Apache Module mod_rewrite 特殊字符的引用 環(huán)境變量 實用方案 RewriteBase RewriteCond RewriteEngine RewriteLock RewriteLog RewriteLogLevel RewriteMap RewriteOptions RewriteRule Apache Module mod_setenvif BrowserMatch BrowserMatchNoCase SetEnvIf SetEnvIfNoCase Apache Module mod_so 為Windows創(chuàng)建可加載模塊 LoadFile LoadModule Apache Module mod_speling CheckSpelling Apache Module mod_ssl 環(huán)境變量 Custom Log Formats SSLCACertificateFile SSLCACertificatePath SSLCADNRequestFile SSLCADNRequestPath SSLCARevocationFile SSLCARevocationPath SSLCertificateChainFile SSLCertificateFile SSLCertificateKeyFile SSLCipherSuite SSLCryptoDevice SSLEngine SSLHonorCipherOrder SSLMutex SSLOptions SSLPassPhraseDialog SSLProtocol SSLProxyCACertificateFile SSLProxyCACertificatePath SSLProxyCARevocationFile SSLProxyCARevocationPath SSLProxyCipherSuite SSLProxyEngine SSLProxyMachineCertificateFile SSLProxyMachineCertificatePath SSLProxyProtocol SSLProxyVerify SSLProxyVerifyDepth SSLRandomSeed SSLRequire SSLRequireSSL SSLSessionCache SSLSessionCacheTimeout SSLUserName SSLVerifyClient SSLVerifyDepth Apache Module mod_status Enabling Status Support 自動更新 Machine Readable Status File ExtendedStatus Apache Module mod_suexec SuexecUserGroup Apache Module mod_unique_id Theory Apache Module mod_userdir UserDir Apache Module mod_usertrack Logging 2-digit or 4-digit dates for cookies? CookieDomain CookieExpires CookieName CookieStyle CookieTracking Apache Module mod_version <IfVersion> Apache Module mod_vhost_alias 目錄名稱的轉(zhuǎn)換 示例 VirtualDocumentRoot VirtualDocumentRootIP VirtualScriptAlias VirtualScriptAliasIP 開發(fā)者文檔 Overview Topics External Resources Apache API notes Basic concepts How handlers work Resource allocation and resource pools Configuration Debugging Memory Allocation in APR Available debugging options Allowable Combinations Activating Debugging Options Documenting Apache 2.0 Apache 2.0 Hook Functions Creating a hook function Hooking the hook Converting Modules from Apache 1.3 to Apache 2.0 The easier changes ... The messier changes... Request Processing in Apache 2.0 The Request Processing Cycle The Request Parsing Phase The Security Phase The Preparation Phase The Handler Phase How Filters Work in Apache 2.0 Filter Types How are filters inserted? Asis Explanations 詞匯和索引 詞匯表 模塊索引 指令索引 指令速查 譯者聲明
characters

配置段(容器)

配置文件中指令的作用范圍可能是整個服務(wù)器,也可能是特定的目錄、文件、主機、URL。本文闡述如何使用配置段(容器)以及.htaccess文件來改變配置指令的作用范圍。

配置段(容器)的類型

容器有兩種基本類型。大多數(shù)容器是針對各個請求的,包含于其中的指令僅對與該容器匹配的請求起作用,而容器<IfDefine>、<IfModule>、<IfVersion>僅在啟動和重新啟動中起作用,如果在啟動時指定的條件成立,則其中的指令對所有的請求都有效,否則將被忽略。

<IfDefine>容器中的指令只有在httpd命令行中設(shè)定了特定的參數(shù)后才有效。下例中,只有在服務(wù)器用 httpd -DClosedForNow 方式啟動時,所有的請求才會被重定向到另一個站點:

<IfDefine ClosedForNow>
Redirect / http://otherserver.example.com/
</IfDefine>

<IfModule>容器很相似,但是其中的指令只有當(dāng)服務(wù)器啟用特定的模塊時才有效(或是被靜態(tài)地編譯進了服務(wù)器,或是被動態(tài)裝載進了服務(wù)器),注意,配置文件中該模塊的裝載指令LoadModule行必須在出現(xiàn)在此容器之前。這個容器應(yīng)該僅用于你希望無論特定模塊是否安裝,配置文件都能正常運轉(zhuǎn)的場合;而不應(yīng)該用于容器中的指令在任何情況下都必須生效的場合,因為它會抑制類似模塊沒找到之類的有用出錯信息。

下例中,MimeMagicFiles指令僅當(dāng)mod_mime_magic模塊啟用時才有效。

<IfModule mod_mime_magic.c>
MimeMagicFile conf/magic
</IfModule>

<IfVersion>指令與<IfDefine><IfModule>很相似,但是其中的指令只有當(dāng)正在執(zhí)行的服務(wù)器版本與指定的版本要求相符時才有效。這個模塊被設(shè)計用于測試套件、以及在一個存在多個不同httpd版本的大型網(wǎng)絡(luò)中需要分別針對不同版本使用不同配置的情況。

<IfVersion >= 2.1>
# 僅在版本高于 2.1.0 的時候才生效
</IfVersion>

<IfDefine>、<IfModule>、<IfVersion>都可以在條件前加一個"!"以實現(xiàn)條件的否定,而且都可以嵌套以實現(xiàn)更復(fù)雜的配置。

文件系統(tǒng)和網(wǎng)絡(luò)空間

最常用的配置段是針對文件系統(tǒng)和網(wǎng)絡(luò)空間特定位置的配置段。首先必須理解文件系統(tǒng)和網(wǎng)絡(luò)空間這兩個概念的區(qū)別,文件系統(tǒng)是指操作系統(tǒng)所看見的磁盤視圖,比如,在Unix文件系統(tǒng)中,Apache會被默認(rèn)安裝到/usr/local/apache2 ,在Windows文件系統(tǒng)中,Apache會被默認(rèn)安裝到"C:/Program Files/Apache Group/Apache2"(注意:Apache始終用正斜杠而不是反斜杠作為路徑的分隔符,即使是在Windows中)。相反,網(wǎng)絡(luò)空間是網(wǎng)站被web服務(wù)器發(fā)送以及被客戶在瀏覽器中所看到的視圖。所以網(wǎng)絡(luò)空間中的路徑/dir/ 在Apache采用默認(rèn)安裝路徑的情況下對應(yīng)于Unix文件系統(tǒng)中的路徑/usr/local/apache2/htdocs/dir/ 。由于網(wǎng)頁可以從數(shù)據(jù)庫或其他地方動態(tài)生成,因此,網(wǎng)絡(luò)空間無須直接映射到文件系統(tǒng)。

文件系統(tǒng)容器

<Directory><Files>指令與其相應(yīng)的正則表達式版本(<DirectoryMatch><FilesMatch>)一起作用于文件系統(tǒng)的特定部分。<Directory>配置段中的指令作用于指定的文件系統(tǒng)目錄及其所有子目錄,.htaccess文件可以達到同樣的效果。下例中,/var/web/dir1 及其所有子目錄被允許進行目錄索引。

<Directory /var/web/dir1>
Options +Indexes
</Directory>

<Files>配置段中的指令作用于特定的文件名,而無論這個文件實際存在于哪個目錄。下例中的配置指令如果出現(xiàn)在配置文件的主服務(wù)器段,則會拒絕對位于任何目錄下的private.html的訪問。

<Files private.html>
Order allow,deny
Deny from all
</Files>

<Files><Directory>段的組合可以作用于文件系統(tǒng)中的特定文件。下例中的配置會拒絕對 /var/web/dir1/private.html/var/web/dir1/subdir2/private.html 、/var/web/dir1/subdir3/private.html等任何 /var/web/dir1/ 目錄下private.html的訪問。

<Directory /var/web/dir1>
<Files private.html>
Order allow,deny
Deny from all
</Files>
</Directory>

網(wǎng)絡(luò)空間容器

<Location>指令與其相應(yīng)的正則表達式版本(<LocationMatch>)一起作用于網(wǎng)絡(luò)空間的特定部分。下例中的配置會拒絕對任何以"/private"開頭的URL路徑的訪問,比如:http://yoursite.example.com/private、http://yoursite.example.com/private123、http://yoursite.example.com/private/dir/file.html 等所有以"/private"開頭的URL路徑。

<Location /private>
Order Allow,Deny
Deny from all
</Location>

<Location>指令與文件系統(tǒng)無關(guān),下例演示了如何將特定的URL映射到Apache內(nèi)部的處理器mod_status ,而并不要求文件系統(tǒng)中確實存在server-status文件。

<Location /server-status>
SetHandler server-status
</Location>

通配符和正則表達式

<Directory>、<Files>、<Location>指令可以使用與C標(biāo)準(zhǔn)庫中的fnmatch類似的shell風(fēng)格的通配符。"*"匹配任何字符串,"?"匹配任何單個的字符,"[seq]"匹配seq序列中的任何字符,符號"/"不被任何通配符所匹配,所以必須顯式地使用。

如果需要更復(fù)雜的匹配,這些容器都有一個對應(yīng)的正則版本:<DirectoryMatch>、<FilesMatch><LocationMatch> ,可以使用與Perl兼容的正則表達式,以提供更復(fù)雜的匹配。但是還必須注意下面配置段的合并部分關(guān)于使用正則表達式會如何作用于配置指令的內(nèi)容。

下例使用非正則表達式的通配符來改變所有用戶目錄的配置:

<Directory /home/*/public_html>
Options Indexes
</Directory>

下例使用正則表達式一次性拒絕對多種圖形文件的訪問:

<FilesMatch \.(?i:gif|jpe?g|png)$>
Order allow,deny
Deny from all
</FilesMatch>

什么情況下用什么

選擇使用文件系統(tǒng)容器還是使用網(wǎng)絡(luò)空間容器其實很簡單。當(dāng)指令應(yīng)該作用于文件系統(tǒng)時,總是用<Directory><Files>;而當(dāng)指令作用于不存在于文件系統(tǒng)的對象時,就用<Location>,比如一個由數(shù)據(jù)庫生成的網(wǎng)頁。

絕對不要試圖用<Location>去限制對文件系統(tǒng)中的對象的訪問,因為許多不同的網(wǎng)絡(luò)空間路徑可能會映射到同一個文件系統(tǒng)目錄,從而導(dǎo)致你的訪問限制被突破。比如:

<Location /dir/>
Order allow,deny
Deny from all
</Location>

上述配置對http://yoursite.example.com/dir/ 請求的確起作用。但是設(shè)想在一個不區(qū)分大小寫的文件系統(tǒng)中,這個訪問限制會被http://yoursite.example.com/DIR/ 請求輕易突破。而<Directory>指令才會真正作用于對這個位置的任何形式的請求。但是有一個例外,就是Unix文件系統(tǒng)中的符號連接(軟連接),符號連接可以使同一個目錄出現(xiàn)在文件系統(tǒng)中的多個位置。<Directory>指令將不重設(shè)路徑名而直接追蹤符號連接,因此,對于安全要求最高的,應(yīng)該用Options指令禁止對符號連接的追蹤。

不要認(rèn)為使用大小寫敏感的文件系統(tǒng)就無所謂了,因為有很多方法可以將不同的網(wǎng)絡(luò)空間路徑映射到同一個文件系統(tǒng)路徑,所以,應(yīng)當(dāng)盡可能使用文件系統(tǒng)容器。但是也有一個例外,就是把訪問限制放在<Location />配置段中可以很安全地作用于除了某些特定URL以外的所有URL。

虛擬主機

<VirtualHost>容器作用于特定的虛擬主機,為同一個機器上具有不同配置的多個主機提供支持。詳見虛擬主機文檔。

代理

<Proxy><ProxyMatch>容器中的指令僅作用于通過mod_proxy代理服務(wù)器訪問的、與指定URL匹配的站點。下例中的配置會拒絕通過代理服務(wù)器訪問cnn.com站點。

<Proxy http://cnn.com/*>
Order allow,deny
Deny from all
</Proxy>

允許使用哪些指令?

查閱指令的作用域,就可以知道哪些指令可以出現(xiàn)在哪些配置段中。從語法上看,允許在<Directory>段中使用的指令當(dāng)然也可以在<DirectoryMatch>、<Files><FilesMatch>、<Location><LocationMatch>、<Proxy><ProxyMatch>段中使用,但也有例外:

  • AllowOverride指令只能出現(xiàn)在<Directory>段中。
  • Options中的FollowSymLinksSymLinksIfOwnerMatch只能出現(xiàn)在<Directory> 段或者.htaccess文件中。
  • Options指令不能用于<Files><FilesMatch>段。

配置段的合并

配置段會按非常特別的順序依次生效,由于這會對配置指令的處理結(jié)果產(chǎn)生重大影響,因此理解它的流程非常重要。

合并的順序是:

  1. <Directory>(除了正則表達式)和.htaccess同時處理;(如果允許的話,.htaccess的設(shè)置會覆蓋<Directory>的設(shè)置)
  2. <DirectoryMatch>(和<Directory ~>)
  3. <Files><FilesMatch>同時處理
  4. <Location><LocationMatch>同時處理

除了<Directory>,每個組都按它們在配置文件中出現(xiàn)的順序被依次處理,而<Directory>(上面的第1組),會按字典順序由短到長被依次處理。例如:<Directory /var/web/dir>會先于<Directory /var/web/dir/subdir>被處理。如果有多個指向同一個目錄的<Directory>段,則按它們在配置文件中的順序被依次處理。用Include指令包含進來的配置被視為按原樣插入到Include指令的位置。

位于<VirtualHost>容器中的配置段在外部對應(yīng)的段處理完畢以后再處理,這樣就允許虛擬主機覆蓋主服務(wù)器的設(shè)置。

當(dāng)請求是由mod_proxy處理的時候,<Proxy>容器將會在處理順序中取代<Directory>容器的位置。

后面的段覆蓋前面的相應(yīng)的段。

技術(shù)說明

其實,在名稱翻譯階段(即用AliasesDocumentRoots來映射URL到文件系統(tǒng))之前,會有一個<Location>/<LocationMatch>的序列被處理,而在名稱翻譯結(jié)束后,這個序列的處理結(jié)果則被完全拋棄。

一些例子

這是一個演示合并順序的例子。如果這些指令都起作用,則會按 A > B > C > D >E 的順序依次生效。

<Location />
E
</Location>

<Files f.html>
D
</Files>

<VirtualHost *>
<Directory /a/b>
B
</Directory>
</VirtualHost>

<DirectoryMatch "^.*b$">
C
</DirectoryMatch>

<Directory /a/b>
A
</Directory>

在下面這個更具體的例子中,無論在<Directory>段中加了多少訪問限制,由于<Location>段將會被最后處理,從而會允許不加限制的對服務(wù)器的訪問,可見合并的順序是很重要的,千萬小心!

<Location />
Order deny,allow
Allow from all
</Location>

# 這個<Directory>段將不會實際生效
<Directory />
Order allow,deny
Allow from all
Deny from badguy.example.com
</Directory>

Previous article: Next article: