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

Verzeichnis suchen
首頁 版本說明 從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è)置的保護(hù) 默認(rèn)配置下服務(wù)器文件的保護(hù) 觀察日志文件 動態(tài)共享對象(DSO) 實現(xiàn) 用法概要 背景知識 優(yōu)點和缺點 內(nèi)容協(xié)商 關(guān)于內(nèi)容協(xié)商 Apache中的內(nèi)容協(xié)商 協(xié)商的方法 打亂品質(zhì)值 透明內(nèi)容協(xié)商的擴(kuò)展 超鏈和名稱轉(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è)置多個守護(hù)進(jìn)程 配置擁有多個虛擬主機的單一守護(hù)進(jìn)程 動態(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ù)器"地址 避免這些問題的小技巧 附錄:進(jìn)一步的提示 常見問題 概述 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 帶多擴(kuò)展名的文件 內(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 詞匯和索引 詞匯表 模塊索引 指令索引 指令速查 譯者聲明
Figuren

深入研究虛擬主機的匹配

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

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

解析配置文件

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

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

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

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

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

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

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

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

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

NameVirtualHostVirtualHost指令出現(xiàn)的順序并不重要。只有對應(yīng)同一個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指令后,虛擬主機服務(wù)器將被賦予在它的VirtualHost指令中第一個名字對應(yīng)的端口作為默認(rèn)的Listen端口。

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

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

因為使用了高效的散列算法,使得在請求到達(dá)的時候在其中查找IP地址的開銷變得很小,或者根本不需考慮。而且這個表格還為只有最后一個八進(jìn)制位不同的IP地址做了優(yōu)化。

虛擬主機的每個變量都有初始值。特別是以下這些:

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

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

如果沒有定義主服務(wù)器中的ServerName ,那么將由運行這個httpd服務(wù)的機器的主機名來代替。我們將由DNS查找此ServerName返回的IP地址稱為主服務(wù)器地址集(main_server address set)。

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

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

虛擬主機匹配

服務(wù)器用下述方法來確定對一個特定的請求使用哪個虛擬主機:

散列表查找

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

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

如果在散列表中沒有找到IP地址,但存在一個"NameVirtualHost *"指令與所請求的端口號相匹配,那么將用這個虛擬主機來處理這個請求。

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

基于IP的虛擬主機

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

基于域名的虛擬主機

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

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

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

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

如果還是找不到對應(yīng)的虛擬主機,那么這個請求將會由客戶端連接的IP對應(yīng)的列表中的第一個與請求的端口相同的虛擬主機來伺服(如前所述)。

持久連接

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

絕對URI

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

備忘錄

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

小技巧

作為DNS問題頁面小技巧的附加,這里有些額外的技巧:

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