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

directory search
首頁(yè) 版本說(shuō)明 從1.3升級(jí)到2.0 編譯時(shí)配置的改變 運(yùn)行時(shí)配置的改變 雜項(xiàng)變化 第三方模塊 從 2.0 升級(jí)到 2.2 編譯時(shí)配置的改變 運(yùn)行時(shí)配置的改變 雜項(xiàng)變化 第三方模塊 Apache 2.1/2.2 版本的新特性 核心增強(qiáng) 模塊增強(qiáng) 程序增強(qiáng) 針對(duì)模塊開(kāi)發(fā)者的變化 Apache 2.0 版本的新特性 核心的增強(qiáng) 模塊的增強(qiáng) Apache許可證 參考手冊(cè) 編譯與安裝 針對(duì)心急者的概述 要求 下載 解壓 配置源代碼樹(shù) 編譯 安裝 配置 測(cè)試 升級(jí) 啟動(dòng) Apache是怎樣啟動(dòng)的 啟動(dòng)時(shí)發(fā)生錯(cuò)誤 隨系統(tǒng)啟動(dòng)時(shí)啟動(dòng) 額外信息 停止與重新啟動(dòng) 簡(jiǎn)介 立即停止 優(yōu)雅重啟 立即重啟 優(yōu)雅停止 附錄:信號(hào)和競(jìng)爭(zhēng)條件 運(yùn)行時(shí)配置指令 主配置文件 配置文件的語(yǔ)法 模塊 指令的作用域 .htaccess文件 配置段 配置段(容器)的類(lèi)型 文件系統(tǒng)和網(wǎng)絡(luò)空間 虛擬主機(jī) 代理 允許使用哪些指令? 配置段的合并 內(nèi)容緩沖 簡(jiǎn)介 緩沖概述 安全方面的考慮 文件句柄緩沖 內(nèi)存緩沖 磁盤(pán)緩沖 服務(wù)器全局配置 服務(wù)器標(biāo)識(shí) 文件定位 限制資源的使用 日志文件 安全警告 錯(cuò)誤日志 訪問(wèn)日志 日志滾動(dòng) 管道日志 虛擬主機(jī) 其他日志文件 從URL到文件系統(tǒng)的映射 相關(guān)模塊和指令 DocumentRoot DocumentRoot以外的文件 用戶(hù)目錄 URL重定向 反向代理 重寫(xiě)引擎 File Not Found 安全方面的提示 保持不斷更新和升級(jí) ServerRoot目錄的權(quán)限 服務(wù)器端包含 關(guān)于CGI 未指定為腳本的CGI 指定為腳本的CGI 其他動(dòng)態(tài)內(nèi)容的來(lái)源 系統(tǒng)設(shè)置的保護(hù) 默認(rèn)配置下服務(wù)器文件的保護(hù) 觀察日志文件 動(dòng)態(tài)共享對(duì)象(DSO) 實(shí)現(xiàn) 用法概要 背景知識(shí) 優(yōu)點(diǎn)和缺點(diǎn) 內(nèi)容協(xié)商 關(guān)于內(nèi)容協(xié)商 Apache中的內(nèi)容協(xié)商 協(xié)商的方法 打亂品質(zhì)值 透明內(nèi)容協(xié)商的擴(kuò)展 超鏈和名稱(chēng)轉(zhuǎn)換說(shuō)明 緩沖說(shuō)明 更多信息 自定義錯(cuò)誤響應(yīng) 行為 配置 自定義錯(cuò)誤響應(yīng)與重定向 地址和端口綁定 概述 針對(duì)IPv6的特殊考慮 怎樣與虛擬主機(jī)協(xié)同工作 多路處理模塊(MPM) 簡(jiǎn)介 選擇一個(gè)MPM 默認(rèn)的MPM 環(huán)境變量 設(shè)置環(huán)境變量 使用環(huán)境變量 用于特殊目的的環(huán)境變量 示例 處理器的使用 什么是處理器? 例子 程序員注意事項(xiàng) 過(guò)濾器 Apache2中的過(guò)濾器 智能過(guò)慮 使用過(guò)濾器 CGI腳本的Suexec執(zhí)行 開(kāi)始之前 suEXEC的安全模型 配置和安裝suEXEC 啟用和禁用suEXEC 使用suEXEC 調(diào)試suEXEC 謹(jǐn)防Jabberwock:警告和舉例 性能調(diào)整 硬件和操作系統(tǒng) 運(yùn)行時(shí)的配置 編譯時(shí)的配置 附錄:蹤跡的詳細(xì)分析 URL重寫(xiě)指南 mod_rewrite簡(jiǎn)介 實(shí)踐方案 URL的規(guī)劃 內(nèi)容的處理 對(duì)訪問(wèn)的限制 其他 虛擬主機(jī)文檔 總述 虛擬主機(jī)支持 配置指令 基于主機(jī)名的虛擬主機(jī) 基于域名的虛擬主機(jī)和基于IP的虛擬主機(jī)比較 使用基于域名的虛擬主機(jī) 與舊版瀏覽器的兼容性 基于IP地址的虛擬主機(jī) 系統(tǒng)需求 如何配置Apache 設(shè)置多個(gè)守護(hù)進(jìn)程 配置擁有多個(gè)虛擬主機(jī)的單一守護(hù)進(jìn)程 動(dòng)態(tài)配置大量虛擬主機(jī) 動(dòng)機(jī) 概述 簡(jiǎn)單的動(dòng)態(tài)虛擬主機(jī) 一個(gè)實(shí)際的個(gè)人主頁(yè)系統(tǒng) 在同一個(gè)服務(wù)器上架設(shè)多個(gè)主機(jī)的虛擬系統(tǒng) 更為有效的基于IP地址的虛擬主機(jī) 使用老版本的Apache 使用mod_rewrite實(shí)現(xiàn)簡(jiǎn)單的動(dòng)態(tài)虛擬主機(jī) 使用mod_rewrite的個(gè)人主頁(yè)系統(tǒng) 使用獨(dú)立的虛擬主機(jī)配置文件 虛擬主機(jī)的普通配置示例 在一個(gè)IP地址上運(yùn)行多個(gè)基于域名的web站點(diǎn) 在多于一個(gè)IP的情況下使用基于域名的虛擬主機(jī) 在不同的IP的地址(比如一個(gè)內(nèi)部和一個(gè)外部地址)上提供相同的內(nèi)容 在不同的端口上運(yùn)行不同的站點(diǎn) 建立基于IP的虛擬主機(jī) 混用基于端口和基于IP的虛擬主機(jī) 混用基于域名和基于IP的虛擬主機(jī) 將虛擬主機(jī)和代理模塊一起使用 使用默認(rèn)虛擬主機(jī) 將一個(gè)基于域名的虛擬主機(jī)移植為一個(gè)基于IP的虛擬主機(jī) 使用ServerPath指令 深入討論虛擬主機(jī)的匹配 解析配置文件 虛擬主機(jī)匹配 小技巧 文件描述符限制 關(guān)于DNS和Apache 一個(gè)簡(jiǎn)單示例 拒絕服務(wù) "主服務(wù)器"地址 避免這些問(wèn)題的小技巧 附錄:進(jìn)一步的提示 常見(jiàn)問(wèn)題 概述 SSL/TLS 加密 概述 文檔 mod_ssl 緒論 密碼技術(shù) 證書(shū) 安全套接字層(SSL) 參考 兼容性 配置指令 環(huán)境變量 自定義日志功能 如何... 加密方案和強(qiáng)制性高等級(jí)安全 客戶(hù)認(rèn)證和訪問(wèn)控制 常見(jiàn)問(wèn)題解答 About The Module Installation Configuration Certificates The SSL Protocol mod_ssl Support 如何.../指南 概述 認(rèn)證 相關(guān)模塊和指令 簡(jiǎn)介 先決條件 啟用認(rèn)證 允許多人訪問(wèn) 可能存在的問(wèn)題 其他認(rèn)證方法 更多信息 CGI動(dòng)態(tài)頁(yè)面 簡(jiǎn)介 配置Apache以允許CGI 編寫(xiě)CGI程序 程序還是不能運(yùn)行! 幕后是怎樣操作的? CGI模塊/庫(kù) 更多信息 服務(wù)器端包含 簡(jiǎn)介 什么是SSI? 配置服務(wù)器以允許SSI 基本SSI指令 附加的例子 我還能設(shè)置其它什么? 執(zhí)行命令 高級(jí)SSI技術(shù) 總結(jié) .htaccess文件 .htaccess文件 工作原理和使用方法 (不)使用.htaccess文件的場(chǎng)合 指令的生效 認(rèn)證舉例 服務(wù)器端包含(SSI)舉例 CGI舉例 疑難解答 用戶(hù)網(wǎng)站目錄 用戶(hù)網(wǎng)站目錄 用UserDir設(shè)置文件路徑 限定哪些用戶(hù)可以使用此功能 啟用對(duì)每個(gè)用戶(hù)都有效的cgi目錄 允許用戶(hù)改變配置 對(duì)特定平臺(tái)的說(shuō)明 概述 Microsoft Windows 其他平臺(tái) 在Microsoft Windows中使用Apache 對(duì)操作系統(tǒng)的要求 下載 Apache for Windows 安裝 Apache for Windows 配置 Apache for Windows 以服務(wù)方式運(yùn)行 Apache for Windows 作為控制臺(tái)程序運(yùn)行Apache 測(cè)試安裝 編譯Windows下的Apache 系統(tǒng)要求 命令行編譯 Developer Studio集成開(kāi)發(fā)環(huán)境的工作區(qū)編譯 項(xiàng)目組件 在Novell NetWare平臺(tái)上使用Apache Requirements Downloading Apache for NetWare Installing Apache for NetWare Running Apache for NetWare Configuring Apache for NetWare Compiling Apache for NetWare 在HP-UX中運(yùn)行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 語(yǔ)法 選項(xiàng) ab 語(yǔ)法 選項(xiàng) Bugs apachectl 語(yǔ)法 選項(xiàng) apxs 語(yǔ)法 選項(xiàng) 舉例 configure 語(yǔ)法 選項(xiàng) 環(huán)境變量 dbmmanage 語(yǔ)法 選項(xiàng) Bugs htcacheclean 語(yǔ)法 選項(xiàng) 返回值 htdbm 語(yǔ)法 選項(xiàng) Bugs 返回值 舉例 安全方面的考慮 限制 htdigest 語(yǔ)法 選項(xiàng) htpasswd 語(yǔ)法 選項(xiàng) 返回值 舉例 安全方面的考慮 限制 logresolve 語(yǔ)法 選項(xiàng) rotatelogs 語(yǔ)法 選項(xiàng) Portability suexec 語(yǔ)法 選項(xiàng) 其他程序 log_server_status split-logfile 雜項(xiàng)文檔 概述 相關(guān)標(biāo)準(zhǔn) HTTP推薦標(biāo)準(zhǔn) HTML推薦標(biāo)準(zhǔn) 認(rèn)證 語(yǔ)言/國(guó)家代碼 Apache 模塊 描述模塊的術(shù)語(yǔ) 說(shuō)明 狀態(tài) 源代碼文件 模塊標(biāo)識(shí)符 兼容性 描述指令的術(shù)語(yǔ) 說(shuō)明 語(yǔ)法 默認(rèn)值(Default) 作用域(Context) 覆蓋項(xiàng)(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 交替間隔語(yǔ)法 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 安全問(wèn)題 選擇哪些信息可以被顯示 已知的局限 AddModuleInfo Apache Module mod_isapi 用法 附加注釋 程序員注記 ISAPIAppendLogToErrors ISAPIAppendLogToQuery ISAPICacheFile ISAPIFakeAsync ISAPILogNotSupported ISAPIReadAheadBuffer Apache Module mod_ldap 示例配置 LDAP 連接池 LDAP 緩沖 使用SSL/TLS SSL/TLS 證書(shū) 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 帶多擴(kuò)展名的文件 內(nèi)容編碼 字符集和語(yǔ)言 AddCharset AddEncoding AddHandler AddInputFilter AddLanguage AddOutputFilter AddType DefaultLanguage ModMimeUsePathInfo MultiviewsMatch RemoveCharset RemoveEncoding RemoveHandler RemoveInputFilter RemoveLanguage RemoveOutputFilter RemoveType TypesConfig Apache Module mod_mime_magic "Magic文件"的格式 性能問(wèn)題 注意 MimeMagicFile Apache Module mod_negotiation 類(lèi)型表 MultiViews CacheNegotiatedDocs ForceLanguagePriority LanguagePriority Apache Module mod_nw_ssl NWSSLTrustedCerts NWSSLUpgradeable SecureListen Apache Module mod_proxy 正向和反向代理 簡(jiǎn)單示例 控制對(duì)代理服務(wù)器的訪問(wèn) 緩慢啟動(dòng) 局域網(wǎng)代理 協(xié)議調(diào)整 請(qǐng)求體 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類(lèi)型的文件不能從FTP下載? 如何強(qiáng)制文件xxx使用FTP的ASCII形式下載? 我如何使用FTP上傳? 我如何能訪問(wèn)我自己home目錄以外的FTP文件? 我如何才能在瀏覽器的URL框中隱藏FTP的明文密碼? Apache Module mod_proxy_http Apache Module mod_rewrite 特殊字符的引用 環(huán)境變量 實(shí)用方案 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 自動(dòng)更新 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 目錄名稱(chēng)的轉(zhuǎn)換 示例 VirtualDocumentRoot VirtualDocumentRootIP VirtualScriptAlias VirtualScriptAliasIP 開(kāi)發(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

深入研究虛擬主機(jī)的匹配

虛擬主機(jī)部分的代碼在Apache 1.3中進(jìn)行了完全的重寫(xiě)。本文檔試圖詳細(xì)解釋Apache在接受到請(qǐng)求后如何確定使用哪一個(gè)虛擬主機(jī)進(jìn)行伺服。在新的NameVirtualHost指令的幫助下,虛擬主機(jī)的配置比1.3版以前更加簡(jiǎn)單和安全。

如果您只是想讓它能夠工作而不愿意進(jìn)行深入理解,這里有一些示例。

解析配置文件

<VirtualHost>配置段外有一個(gè)主服務(wù)器(main_server)段中包含著所有定義。其中有<VirtualHost>配置段中定義的叫做虛擬主機(jī)(vhost)的虛擬服務(wù)器。

Listen, ServerName, ServerPath, ServerAlias指令可以出現(xiàn)在一個(gè)服務(wù)器定義段的任何地方。而且每個(gè)指令都會(huì)覆蓋前面出現(xiàn)的同樣定義(在那個(gè)服務(wù)器配置中)。

主服務(wù)器段中Listen指令的默認(rèn)值是80。主服務(wù)器段沒(méi)有默認(rèn)的ServerPathServerAlias指令值。ServerName的默認(rèn)值是由服務(wù)器的IP地址推斷而來(lái)。

主服務(wù)器的Listen指令有兩個(gè)功能:其一是決定Apache將要綁定的網(wǎng)絡(luò)端口;其二是在重定向中指定絕對(duì)URI將使用的端口號(hào)。

不象在主服務(wù)器里,虛擬服務(wù)器的端口不會(huì)影響到Apache的監(jiān)聽(tīng)端口。

每個(gè)VirtualHost指令中的地址都可以附帶一個(gè)可選的端口。如果沒(méi)有進(jìn)行特別的指定,這個(gè)端口默認(rèn)為主服務(wù)器中最近的一個(gè)Listen指令指定的值。特殊的端口"*"表示匹配所有端口。所有這一系列地址(包括由DNS查詢(xún)出的所有A記錄)統(tǒng)稱(chēng)虛擬主機(jī)的地址集(address set)。

如果沒(méi)有對(duì)一個(gè)特定的IP地址使用NameVirtualHost指令,那么第一個(gè)使用這個(gè)地址的虛擬主機(jī)將被視為基于IP的虛擬主機(jī)。IP地址也可以用通配符"*"表示。

如果使用了基于域名的虛擬主機(jī),那么必須NameVirtualHost指令為這個(gè)基于域名的虛擬主機(jī)指定IP地址集。換句話(huà)說(shuō),您必須在配置文件中通過(guò)NameVirtualHost指令指定包括主機(jī)名映射(CNAME)的IP地址。

可以使用很多NameVirtualHost指令來(lái)分別對(duì)應(yīng)一套NameVirtualHost指令,但對(duì)于每個(gè)特定的"IP:port"對(duì)來(lái)說(shuō),只能使用一次NameVirtualHost指令。

NameVirtualHostVirtualHost指令出現(xiàn)的順序并不重要。只有對(duì)應(yīng)同一個(gè)IP地址的VirtualHost指令的次序才是重要的。所以下面兩例所起的作用是完全相同的:

NameVirtualHost 111.22.33.44
<VirtualHost 111.22.33.44>
# server A
...
</VirtualHost>
<VirtualHost 111.22.33.44>
# server B
...
</VirtualHost>

NameVirtualHost 111.22.33.55
<VirtualHost 111.22.33.55>
# server C
...
</VirtualHost>
<VirtualHost 111.22.33.55>
# server D
...
</VirtualHost>

<VirtualHost 111.22.33.44>
# server A
</VirtualHost>
<VirtualHost 111.22.33.55>
# server C
...
</VirtualHost>
<VirtualHost 111.22.33.44>
# server B
...
</VirtualHost>
<VirtualHost 111.22.33.55>
# server D
...
</VirtualHost>

NameVirtualHost 111.22.33.44
NameVirtualHost 111.22.33.55

(為了使您的配置文件更具可讀性,我們推薦您使用左邊的格式)

在解析完VirtualHost指令后,虛擬主機(jī)服務(wù)器將被賦予在它的VirtualHost指令中第一個(gè)名字對(duì)應(yīng)的端口作為默認(rèn)的Listen端口。

如果所有域名都指向同一個(gè)地址集的話(huà),VirtualHost指令中的所有域名列表都將會(huì)得到和ServerAlias指令一樣的處理(但不會(huì)被其他ServerAlias語(yǔ)句覆蓋)。請(qǐng)注意,這個(gè)虛擬主機(jī)自帶的Listen指令將不能影響到那個(gè)地址集的端口號(hào)。

在初始化的過(guò)程中,將會(huì)為每一個(gè)IP地址產(chǎn)生一個(gè)列表,并插入到一個(gè)散列表中。如果這個(gè)IP地址是用在一個(gè)NameVirtualHost指令中的,這個(gè)列表將會(huì)包含所有指定為這個(gè)IP地址的基于域名的虛擬主機(jī)。如果沒(méi)有虛擬主機(jī)針對(duì)這個(gè)IP地址,那么NameVirtualHost指令將被忽略,并會(huì)在日志中記錄一個(gè)錯(cuò)誤信息。對(duì)于基于IP的虛擬主機(jī)而言,這個(gè)散列表中的列表為空。

因?yàn)槭褂昧烁咝У纳⒘兴惴?,使得在?qǐng)求到達(dá)的時(shí)候在其中查找IP地址的開(kāi)銷(xiāo)變得很小,或者根本不需考慮。而且這個(gè)表格還為只有最后一個(gè)八進(jìn)制位不同的IP地址做了優(yōu)化。

虛擬主機(jī)的每個(gè)變量都有初始值。特別是以下這些:

  1. 如果虛擬主機(jī)沒(méi)有ServerAdmin, ResourceConfig, AccessConfig, Timeout, KeepAliveTimeout, KeepAlive, MaxKeepAliveRequests, ReceiveBufferSize, SendBufferSize指令,那么將從主服務(wù)器繼承它們的值。(也就是說(shuō),使用在主服務(wù)器中最后出現(xiàn)的設(shè)定值)。
  2. 虛擬主機(jī)的默認(rèn)目錄權(quán)限將繼承主服務(wù)器的設(shè)置(包括所有模塊針對(duì)每個(gè)目錄的配置信息)。
  3. 虛擬主機(jī)將繼承主服務(wù)器中每個(gè)模塊針對(duì)主服務(wù)器的設(shè)置。

本質(zhì)上,主服務(wù)器在建立每個(gè)虛擬主機(jī)的時(shí)候,充當(dāng)了一個(gè)默認(rèn)值或根基的角色。但這些存在于主服務(wù)器中的定義的位置是無(wú)關(guān)緊要的——主服務(wù)器的配置在與虛擬主機(jī)整合之前就已經(jīng)解析過(guò)了。所以即使一個(gè)主服務(wù)器的配置出現(xiàn)在虛擬主機(jī)定義的后面,它也同樣會(huì)影響到虛擬主機(jī)的配置。

如果沒(méi)有定義主服務(wù)器中的ServerName ,那么將由運(yùn)行這個(gè)httpd服務(wù)的機(jī)器的主機(jī)名來(lái)代替。我們將由DNS查找此ServerName返回的IP地址稱(chēng)為主服務(wù)器地址集(main_server address set)。

在沒(méi)有定義ServerName的情況下,一個(gè)基于域名的虛擬主機(jī)默認(rèn)采用定義虛擬主機(jī)時(shí)在VirtualHost指令中最先出現(xiàn)的地址。

所有使用了"_default_"通配符的虛擬主機(jī)將被賦予和主服務(wù)器相同的ServerName 。

虛擬主機(jī)匹配

服務(wù)器用下述方法來(lái)確定對(duì)一個(gè)特定的請(qǐng)求使用哪個(gè)虛擬主機(jī):

散列表查找

當(dāng)客戶(hù)端第一次連接的時(shí)候,會(huì)從內(nèi)部的IP散列表中查找客戶(hù)端想要連接的IP地址。

如果查找失敗(沒(méi)有找到相應(yīng)的IP地址),而所請(qǐng)求的端口又存在一個(gè)"_default_"虛擬主機(jī),那么這個(gè)請(qǐng)求將會(huì)由這個(gè)虛擬主機(jī)來(lái)伺服。如果沒(méi)有找到這樣的"_default_"虛擬主機(jī),那么這個(gè)請(qǐng)求將會(huì)由主服務(wù)器來(lái)伺服。

如果在散列表中沒(méi)有找到IP地址,但存在一個(gè)"NameVirtualHost *"指令與所請(qǐng)求的端口號(hào)相匹配,那么將用這個(gè)虛擬主機(jī)來(lái)處理這個(gè)請(qǐng)求。

如果查找成功(找到了對(duì)應(yīng)于這個(gè)IP地址的列表),下一步就是看我們要處理的是一個(gè)基于IP的虛擬主機(jī)還是一個(gè)基于域名的虛擬主機(jī)。

基于IP的虛擬主機(jī)

如果返回的列表中域名列表為空,那么我們處理的就是一個(gè)基于IP的虛擬主機(jī),這個(gè)虛擬主機(jī)將會(huì)直接進(jìn)行處理而不會(huì)有其他步驟。

基于域名的虛擬主機(jī)

如果返回的域名列表包含一個(gè)或多個(gè)虛擬主機(jī)的結(jié)構(gòu),那么我們處理的就是一個(gè)基于域名的虛擬主機(jī)。這個(gè)列表包含的虛擬主機(jī)的順序與配置文件中相應(yīng)VirtualHost指令出現(xiàn)的順序是相同的。

這個(gè)列表中第一個(gè)虛擬主機(jī)(也就是在配置文件中第一個(gè)指定了這個(gè)IP地址的虛擬主機(jī))對(duì)處理請(qǐng)求有著最高的優(yōu)先級(jí)。所有對(duì)未知服務(wù)器名或沒(méi)有"Host:"頭的請(qǐng)求都將由它進(jìn)行處理。

如果客戶(hù)端在請(qǐng)求中提供了一個(gè)"Host:"頭,那么將在列表中查找第一個(gè)ServerNameServerAlias與其符合的虛擬主機(jī),并將其用于伺服這個(gè)請(qǐng)求。盡管"Host:"頭中可以包含端口號(hào),但Apache還是會(huì)用收到請(qǐng)求的那個(gè)真實(shí)端口來(lái)進(jìn)行匹配。

如果客戶(hù)端提交了一個(gè)不包含"Host:"頭的HTTP/1.0的請(qǐng)求,我們將無(wú)法確認(rèn)客戶(hù)端想要連接那個(gè)服務(wù)器。而如果存在一個(gè)ServerPath與客戶(hù)端提交的請(qǐng)求中的URI相對(duì)應(yīng),那么列表中第一個(gè)符合條件的虛擬主機(jī)將用于伺服這個(gè)請(qǐng)求。

如果還是找不到對(duì)應(yīng)的虛擬主機(jī),那么這個(gè)請(qǐng)求將會(huì)由客戶(hù)端連接的IP對(duì)應(yīng)的列表中的第一個(gè)與請(qǐng)求的端口相同的虛擬主機(jī)來(lái)伺服(如前所述)。

持久連接

上述IP查找對(duì)一個(gè)特定的TCP/IP進(jìn)程只執(zhí)行一次。但在持久連接(KeepAlive)中,每個(gè)請(qǐng)求都會(huì)進(jìn)行一次這樣的查找過(guò)程。換句話(huà)說(shuō),一個(gè)客戶(hù)端在一個(gè)持久連接中可以向位于不同的基于域名的虛擬主機(jī)的頁(yè)面提出請(qǐng)求。

絕對(duì)URI

如果請(qǐng)求提交的URI是一個(gè)絕對(duì)URI,而其中的主機(jī)名和端口號(hào)又和主服務(wù)器或某個(gè)虛擬主機(jī)相符合,并且也與作為此請(qǐng)求提交對(duì)象的地址和端口相符,那么這個(gè)請(qǐng)求的類(lèi)型/主機(jī)名/端口前綴將被抹除,僅留下相對(duì)URI為對(duì)應(yīng)的主服務(wù)器或虛擬主機(jī)所伺服。如果不滿(mǎn)足上述符合條件,這個(gè)URI將保留原樣,而此請(qǐng)求將被作為一個(gè)代理請(qǐng)求處理。

備忘錄

  • 基于域名的虛擬主機(jī)和基于IP的虛擬主機(jī)之間互相不干擾?;贗P的虛擬主機(jī)只接受發(fā)送到它自身地址集的請(qǐng)求,而不接受其他IP地址?;谟蛎奶摂M主機(jī)也是一樣,它們只接受NameVirtualHost指令定義的地址集的訪問(wèn)。
  • 永遠(yuǎn)不會(huì)對(duì)一個(gè)基于IP的虛擬主機(jī)執(zhí)行ServerAliasServerPath檢查。
  • 在配置文件中,基于域名的虛擬主機(jī)、基于IP的虛擬主機(jī)、"_default_"虛擬主機(jī)和NameVirtualHost指令出現(xiàn)的順序并不重要。而對(duì)于某個(gè)指定的地址集來(lái)說(shuō),基于域名的虛擬主機(jī)的順序是不能混淆的:在配置文件中較先出現(xiàn)的虛擬主機(jī)在相應(yīng)的地址集中有較高的優(yōu)先權(quán)。
  • 出于安全性的考慮,在"Host:"頭中出現(xiàn)的端口號(hào)將不用于匹配。Apache會(huì)一直使用客戶(hù)端所連接的真實(shí)端口作為匹配。
  • 如果一個(gè)ServerPath指令湊巧是后面出現(xiàn)的另外一個(gè)ServerPath指令的前綴,前者將用于匹配,而后者將被忽略。(這里討論的是沒(méi)有"Host:"頭來(lái)將這兩個(gè)情況分開(kāi)的情況下)
  • 如果有兩個(gè)基于IP的虛擬主機(jī)使用了同一個(gè)地址,則在配置文件中首先出現(xiàn)的那個(gè)用于匹配。這種事情可能發(fā)生在你疏忽的時(shí)候。當(dāng)服務(wù)器遇到這種情況的時(shí)候,會(huì)在日志文件中寫(xiě)入一個(gè)錯(cuò)誤信息。
  • 僅當(dāng)沒(méi)有其他虛擬主機(jī)符合客戶(hù)端請(qǐng)求的IP地址和端口號(hào)時(shí),"_default_"虛擬主機(jī)才會(huì)捕獲這個(gè)請(qǐng)求。并且僅當(dāng)"_default_"虛擬主機(jī)的端口號(hào)(默認(rèn)值由您的Listen指定)與客戶(hù)端發(fā)送請(qǐng)求的目的端口號(hào)相符時(shí),這個(gè)請(qǐng)求才會(huì)被捕獲。也可以使用通配符(例如:"_default_:*")來(lái)捕獲任何端口號(hào)的請(qǐng)求。這也同樣適用于"NameVirtualHost *"的虛擬主機(jī)。
  • 僅當(dāng)客戶(hù)端連接的目的IP地址和端口號(hào)沒(méi)有指定而且不與任何一個(gè)虛擬主機(jī)(包括"_default_"虛擬主機(jī))匹配的時(shí)候,才會(huì)用主服務(wù)器來(lái)伺服請(qǐng)求。換句話(huà)說(shuō),主服務(wù)器僅捕獲沒(méi)有指定IP地址和端口的請(qǐng)求(除非存在一個(gè)匹配端口的"_default_"虛擬主機(jī))。
  • 如果客戶(hù)端連接到一個(gè)用于基于域名的虛擬主機(jī)使用的地址(和端口),比如說(shuō)使用了NameVirtualHost指令,那么一個(gè)未知的或沒(méi)有"Host:"頭的請(qǐng)求就不會(huì)與"_default_"虛擬主機(jī)或是主服務(wù)器相匹配。
  • 絕對(duì)不能在VirtualHost指令中使用DNS名稱(chēng),否則您的服務(wù)器就會(huì)依賴(lài)DNS來(lái)進(jìn)行啟動(dòng)。而且,如果您無(wú)法控制列表中所有的域,您將會(huì)面臨安全威脅。您可以在這里獲得關(guān)于這個(gè)問(wèn)題和以下兩個(gè)問(wèn)題的更多詳情。
  • 應(yīng)當(dāng)為每個(gè)虛擬主機(jī)設(shè)定ServerName 。否則就會(huì)需要為每個(gè)虛擬主機(jī)進(jìn)行DNS查詢(xún)。

小技巧

作為DNS問(wèn)題頁(yè)面小技巧的附加,這里有些額外的技巧:

  • 將所有主服務(wù)器的定義放在所有VirtualHost定義之前(為了增加可讀性),否則會(huì)使得類(lèi)似在虛擬主機(jī)旁邊的定義影響到所有的虛擬主機(jī)這樣的問(wèn)題不容易發(fā)現(xiàn)。
  • 將您配置中相應(yīng)的NameVirtualHostVirtualHost定義放到一起,以獲得更好的可讀性。
  • 避免前一個(gè)ServerPaths是后一個(gè)ServerPaths的前綴。如果您無(wú)法避免這樣的情況,您最好確保在您的配置文件中"長(zhǎng)在前,短在后"(也就是說(shuō):"ServerPath/abc/def"應(yīng)當(dāng)出現(xiàn)在"ServerPath/abc"之前)。
Previous article: Next article: