亚洲国产日韩欧美一区二区三区,精品亚洲国产成人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ì)模塊開發(fā)者的變化 Apache 2.0 版本的新特性 核心的增強(qiáng) 模塊的增強(qiáng) Apache許可證 參考手冊(cè) 編譯與安裝 針對(duì)心急者的概述 要求 下載 解壓 配置源代碼樹 編譯 安裝 配置 測(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文件 配置段 配置段(容器)的類型 文件系統(tǒng)和網(wǎng)絡(luò)空間 虛擬主機(jī) 代理 允許使用哪些指令? 配置段的合并 內(nèi)容緩沖 簡(jiǎn)介 緩沖概述 安全方面的考慮 文件句柄緩沖 內(nèi)存緩沖 磁盤緩沖 服務(wù)器全局配置 服務(wù)器標(biāo)識(shí) 文件定位 限制資源的使用 日志文件 安全警告 錯(cuò)誤日志 訪問(wèn)日志 日志滾動(dòng) 管道日志 虛擬主機(jī) 其他日志文件 從URL到文件系統(tǒng)的映射 相關(guān)模塊和指令 DocumentRoot DocumentRoot以外的文件 用戶目錄 URL重定向 反向代理 重寫引擎 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ò)展 超鏈和名稱轉(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í)行 開始之前 suEXEC的安全模型 配置和安裝suEXEC 啟用和禁用suEXEC 使用suEXEC 調(diào)試suEXEC 謹(jǐn)防Jabberwock:警告和舉例 性能調(diào)整 硬件和操作系統(tǒng) 運(yùn)行時(shí)的配置 編譯時(shí)的配置 附錄:蹤跡的詳細(xì)分析 URL重寫指南 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)一步的提示 常見問(wèn)題 概述 SSL/TLS 加密 概述 文檔 mod_ssl 緒論 密碼技術(shù) 證書 安全套接字層(SSL) 參考 兼容性 配置指令 環(huán)境變量 自定義日志功能 如何... 加密方案和強(qiáng)制性高等級(jí)安全 客戶認(rèn)證和訪問(wè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 編寫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舉例 疑難解答 用戶網(wǎng)站目錄 用戶網(wǎng)站目錄 用UserDir設(shè)置文件路徑 限定哪些用戶可以使用此功能 啟用對(duì)每個(gè)用戶都有效的cgi目錄 允許用戶改變配置 對(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集成開發(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 證書 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 類型表 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類型的文件不能從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 目錄名稱的轉(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

內(nèi)容協(xié)商

Apache支持HTTP/1.1規(guī)范中定義的內(nèi)容協(xié)商,它可以根據(jù)瀏覽器提供的參數(shù)選擇一個(gè)資源最合適的媒體類型、語(yǔ)言、字符集和編碼的表現(xiàn)方式。它還實(shí)現(xiàn)了一些對(duì)瀏覽器發(fā)送不完整內(nèi)容協(xié)商信息進(jìn)行智能處理的能力。

內(nèi)容協(xié)商由mod_negotiation模塊支持,并被默認(rèn)編譯進(jìn)服務(wù)器。

關(guān)于內(nèi)容協(xié)商(Content Negotiation)

一個(gè)資源可能會(huì)有多種不同的表現(xiàn)形式,比如,可能會(huì)有不同語(yǔ)言或者媒體類型的版本甚至其組合。最常用的選擇方法是提供一個(gè)索引頁(yè)以供選擇。但是由于瀏覽器可以在請(qǐng)求頭信息中提供其首選項(xiàng)的表現(xiàn)形式,因此就有可能讓服務(wù)器進(jìn)行自動(dòng)選擇。比如,瀏覽器可以表明希望看見法語(yǔ)的信息,如果沒(méi)有,英語(yǔ)的也行。如需僅請(qǐng)求法語(yǔ)的表現(xiàn)形式,瀏覽器可以發(fā)出:

Accept-Language: fr

注意:此首選項(xiàng)信息僅當(dāng)存在多種可選的語(yǔ)言表現(xiàn)形式時(shí)才有效。

下面是一個(gè)更復(fù)雜的請(qǐng)求,瀏覽器表明,可以接受法語(yǔ)和英語(yǔ),但最好是法語(yǔ);接受各種媒體類型,最好是HTML,但純文件或其他文本類型也可以;最好是GIF或JPEG,但其他媒體類型也可以,并允許其他媒體類型作為最終表現(xiàn)形式:

Accept-Language: fr; q=1.0, en; q=0.5
Accept: text/html; q=1.0, text/*; q=0.8, image/gif; q=0.6, image/jpeg; q=0.6, image/*; q=0.5, */*; q=0.1

Apache支持HTTP/1.1規(guī)范中定義的"服務(wù)器驅(qū)動(dòng)"的內(nèi)容協(xié)商, 可以完全地支持Accept、Accept-LanguageAccept-Charset、Accept-Encoding請(qǐng)求頭,這些是RFC2295和RFC2296中定義的實(shí)驗(yàn)協(xié)商協(xié)議,但是不支持這些RFC中定義的"功能協(xié)商"。

資源(resource)是一個(gè)在URI(RFC2396)中定義的概念上的實(shí)體。一個(gè)HTTP服務(wù)器,比如Apache,以表現(xiàn)形式(representation)提供對(duì)其名稱空間中資源的訪問(wèn),各種表現(xiàn)形式由已定義的媒體類型、字符集和編碼的字節(jié)流構(gòu)成。任何一個(gè)特定的時(shí)刻,一個(gè)資源可以沒(méi)有,或者有一個(gè),或者有多個(gè)表現(xiàn)形式。如果有多個(gè)表現(xiàn)形式存在,則稱該資源是可協(xié)商的(negotiable),其各種表現(xiàn)形式稱為變種(variant)。而一個(gè)可協(xié)商的資源的各種變種的區(qū)別途徑稱為變?cè)?dimension)。

Apache中的內(nèi)容協(xié)商

可以使用下述兩種途徑之一向服務(wù)器提供有關(guān)各變種的信息,以實(shí)現(xiàn)對(duì)資源的協(xié)商:

  • 使用類型表(也就是一個(gè) *.var文件)明確指定各變種的文件名。
  • 使用"MultiViews"搜索,即服務(wù)器執(zhí)行一個(gè)隱含的文件名模式匹配,并在其結(jié)果中選擇。

使用類型表文件

類型表是一個(gè)與type-map處理器關(guān)聯(lián)的文檔(或者兼容早期Apache配置的MIME類型:application/x-type-map )。要使用這個(gè)功能,必須在配置中建立處理器,以定義一個(gè)文件后綴為type-map,最好的方法是在配置文件中這樣設(shè)置:

AddHandler type-map .var

類型表文件應(yīng)該與所描述的資源同名,且對(duì)每個(gè)有效變種都有一個(gè)塊(entry),每個(gè)塊由若干連續(xù)的HTTP頭行組成,不同變種的塊用空行分開,塊中不允許有空行。習(xí)慣上,類型表都以一個(gè)描述總體性質(zhì)的組合塊作為開始(這不是必須的,如果有也會(huì)被忽略)。下例是一個(gè)描述資源foo的命名為foo.var的類型表文件:

URI: foo

URI: foo.en.html
Content-type: text/html
Content-language: en

URI: foo.fr.de.html
Content-type: text/html;charset=iso-8859-2
Content-language: fr, de

注意:即使將MultiViews設(shè)置為 On ,類型表仍然優(yōu)先于文件后綴名。如果不同的變種具有不同的資源品質(zhì),就可以對(duì)媒體類型使用"qs"參數(shù)來(lái)表示這種不同。下例演示了一個(gè)圖片的 jpeg, gif, ASCII-art 三個(gè)有效變種:

URI: foo

URI: foo.jpeg
Content-type: image/jpeg; qs=0.8

URI: foo.gif
Content-type: image/gif; qs=0.5

URI: foo.txt
Content-type: text/plain; qs=0.01

qs的取值范圍是0.000到1.000,取值為0.000的變種永遠(yuǎn)不會(huì)被選擇,沒(méi)有指定qs值的變種其qs值為1.0。qs值表示一個(gè)變種相對(duì)于其他變種的"品質(zhì)",比如在表現(xiàn)一張照片時(shí),jpeg通常比字符構(gòu)圖有更高的品質(zhì);而如果要表現(xiàn)的本來(lái)就是一個(gè)ASCII-art ,那么當(dāng)然字符構(gòu)圖就會(huì)比jpeg文件有更高的品質(zhì)。因此,qs的值取決于變種所表現(xiàn)的資源本身。

mod_negotation類型表文檔中有完整的HTTP頭的列表。

Multiviews

MultiViews是一個(gè)針對(duì)每個(gè)目錄的選項(xiàng),也就是說(shuō)可以在httpd.conf.htaccess(如果正確設(shè)置了AllowOverride)文件中的<Directory>、<Location><Files>配置段中,用Options指令來(lái)指定。注意,Options All 并不會(huì)設(shè)置MultiViews ,你必須明確地指定。

MultiViews的效果是:如果服務(wù)器收到對(duì)/some/dir/foo的請(qǐng)求,而/some/dir/foo存在,但是如果/some/dir啟用了MultiViews ,則服務(wù)器會(huì)查找這個(gè)目錄下所有的foo.* 文件,并有效地偽造一個(gè)說(shuō)明這些foo.* 文件的類型表,分配給他們相同的媒體類型及內(nèi)容編碼,并選擇其中最合適的匹配返回給客戶。

MultiViews還可以在服務(wù)器檢索一個(gè)目錄時(shí),用于DirectoryIndex指令搜索的文件名。如果設(shè)置了:

DirectoryIndex index

index.htmlindex.html3并存,則服務(wù)器會(huì)作一個(gè)權(quán)衡;如果都沒(méi)有,但是有index.cgi ,則服務(wù)器會(huì)執(zhí)行它。

如果一個(gè)目錄中沒(méi)有任何文件具有mod_mime可以識(shí)別的表示其字符集、內(nèi)容類型、語(yǔ)言和編碼的后綴,那么其結(jié)果將取決于MultiViewsMatch指令的設(shè)置,這個(gè)指令決定了在MultiViews協(xié)商中將使用的處理器、過(guò)濾器和其他后綴類型。

協(xié)商的方法

Apache從一個(gè)類型表或者某個(gè)目錄的文件名中得到一個(gè)資源變種列表以后,會(huì)使用兩種方法之一選擇可能的"最佳"變種返回給客戶。使用Apache的內(nèi)容協(xié)商功能并不需要了解其細(xì)節(jié),以下文檔對(duì)這些方法加以詳細(xì)說(shuō)明,供有興趣的人看看。

協(xié)商有兩種方法:

  1. 使用Apache算法的服務(wù)器驅(qū)動(dòng)協(xié)商 是通常情況下的默認(rèn)方法。使用這個(gè)算法(下面有詳細(xì)的描述),為了得到更好的效果,Apache有時(shí)會(huì)"打亂"一個(gè)特定變?cè)?dimension)的品質(zhì)因子,其方法稍后會(huì)詳細(xì)闡述。
  2. 透明內(nèi)容協(xié)商 僅當(dāng)瀏覽器明確地用RFC2295中定義的機(jī)制發(fā)出請(qǐng)求時(shí)才使用。這種方法可以給予瀏覽器對(duì)"最佳"變種選擇的完全控制,因此其效果也取決于瀏覽器使用的算法。作為透明協(xié)商過(guò)程的一部分,瀏覽器可以要求Apache執(zhí)行RFC2296中定義的"遠(yuǎn)程變種選擇算法"。

協(xié)商的變?cè)?Dimension)

變?cè)?/th> 說(shuō)明
媒體類型 瀏覽器在Accept頭中指明首選項(xiàng),其中各項(xiàng)與品質(zhì)因子關(guān)聯(lián),變種描述也可以有品質(zhì)因子(參數(shù)"qs")。
語(yǔ)言 瀏覽器在Accept-Language頭中指明首選項(xiàng),其中各項(xiàng)與品質(zhì)因子關(guān)聯(lián),變種可以與零個(gè)、一個(gè)或多個(gè)語(yǔ)言關(guān)聯(lián)。
編碼 瀏覽器在Accept-Encoding頭中指明首選項(xiàng),其中各項(xiàng)與品質(zhì)因子關(guān)聯(lián)。
字符集 瀏覽器在Accept-Charset頭中指明首選項(xiàng),其中各項(xiàng)與品質(zhì)因子關(guān)聯(lián),變種可以指定一個(gè)字符集作為媒體類型的一個(gè)參數(shù)。

Apache協(xié)商算法

Apache使用下述算法選擇可能的"最佳"變種返回給瀏覽器。此算法不能被再配置。其過(guò)程如下:

  1. 首先,對(duì)每個(gè)協(xié)商變?cè)瑱z查其適當(dāng)?shù)?em>Accept* 頭,并對(duì)每個(gè)變種指定一個(gè)品質(zhì)。如果一個(gè)變?cè)?em>Accept* 頭指示不接受這個(gè)變種,則被剔除。如果最終沒(méi)有變種了,則轉(zhuǎn)到步驟4。
  2. 順序執(zhí)行以下的測(cè)試,使用逐步剔除的方法來(lái)選擇"最佳"變種。不能通過(guò)測(cè)試的變種將被剔除。每個(gè)測(cè)試完成后,如果僅剩一個(gè)變種,則作為最佳匹配,轉(zhuǎn)到步驟3;如果多于一個(gè),則繼續(xù)下一個(gè)測(cè)試。
    1. Accept頭的品質(zhì)因子乘以該變種媒體類型的還原品質(zhì)因子,選擇乘積最高者。
    2. 選擇語(yǔ)言品質(zhì)因子最高的變種。
    3. 使用Accept-Language頭中的語(yǔ)言順序(如果存在的話),或者使用LanguagePriority指令中的語(yǔ)言順序(如果存在的話)選擇最匹配的語(yǔ)言。
    4. 選擇最高"等級(jí)"媒體參數(shù)的變種(用以確定text/html的媒體類型)。
    5. 選擇Accept-Charset頭中指定的最佳字符集媒體參數(shù)的變種。如果沒(méi)有明確指定,則使用ISO-8859-1字符集。具有text/* 媒體類型而沒(méi)有明確地與一個(gè)特定字符集關(guān)聯(lián)的變種,將使用ISO-8859-1。
    6. 選擇與之關(guān)聯(lián)字符集不是ISO-8859-1的變種,如果沒(méi)有這樣的變種,則選擇所有的變種。
    7. 選擇最佳編碼的變種。如果存在用戶代理可以接受的編碼的變種,則選擇之;否則,如果存在混合編碼的或者未編碼的變種,則選擇未編碼的變種。如果所有的變種都是編碼的,或者所有變種都是未編碼的,則選擇所有的變種。
    8. 選擇內(nèi)容長(zhǎng)度最小的變種。
    9. 選擇剩余變種的最前一個(gè),這個(gè)變種或是類型表文件中的第一個(gè),或從目錄中讀取變種被時(shí),以ASCII編碼順序的第一個(gè)文件。
  3. 這時(shí),此算法已經(jīng)選擇了一個(gè)"最佳"變種,并將之返回作為響應(yīng)。HTTP響應(yīng)頭的Vary會(huì)指明協(xié)商的變?cè)?瀏覽器和緩存可以利用此信息緩存該資源)。
  4. 如果沒(méi)有一個(gè)變種被選擇(因?yàn)闆](méi)有一種可以被瀏覽器接受),則返回一個(gè)狀態(tài)值為406響應(yīng)體,并包含一個(gè)HTML格式的有效變種列表,同樣,在HTTP頭的Vary中指明了變種的變?cè)?/li>

打亂品質(zhì)值

Apache有時(shí)會(huì)改變按照Apache協(xié)商算法應(yīng)該被嚴(yán)格解析的品質(zhì)值,從而在瀏覽器沒(méi)有發(fā)送完整的精確的信息時(shí)獲得更好的效果。有些很常用的瀏覽器在許多情況下,會(huì)發(fā)送導(dǎo)致變種選擇錯(cuò)誤的Accept頭信息。如果一個(gè)瀏覽器發(fā)送了完整的且正確的信息,則不會(huì)有打亂操作。

媒體類型與通配符

Accept: 請(qǐng)求頭指明了媒體類型的首選項(xiàng),也可以包含"通配"媒體類型,如"image/*"和匹配任何字符串的"*/*"。所以,如果一個(gè)請(qǐng)求包含:

Accept: image/*, */*

會(huì)指明可以接受任何以"image/"開頭的類型,和其他任何類型(因而前面的"image/*"就是多余的)。有些瀏覽器就會(huì)這樣例行公事地在明確指定允許的類型后面附加通配類型,比如:

Accept: text/html, text/plain, image/gif, image/jpeg, */*

其目的是表明,明確列出的是首選項(xiàng),其他不同的表現(xiàn)也可以。這種用法不是不可以,但是"*/*"其實(shí)可以通配所有其他類型,所以不推薦這樣用,而應(yīng)該對(duì)"*.*"賦予一個(gè)較低的品質(zhì)(首選)值0.01,如:

Accept: text/html, text/plain, image/gif, image/jpeg, */*; q=0.01

明確指定的類型沒(méi)有品質(zhì)值,所以其品質(zhì)值是默認(rèn)的最高值1.0,而"*/*"是較低的0.01,所以,只有在沒(méi)有匹配明確指定類型的變種時(shí),才會(huì)返回其他類型。

如果Accept:沒(méi)有指定任何q因子,那么Apache設(shè)置"*/*"的q值為0.01來(lái)模擬上述推薦的行為,還會(huì)設(shè)置"type/*"的q值為0.02,使之優(yōu)先于"*/*"。如果Accept: 頭中任何媒體類型指定了q因子,則不會(huì)使用這些特殊值,以使正確發(fā)送信息的瀏覽器能正常運(yùn)作。

語(yǔ)言協(xié)商的例外

在Apache 2.0中的協(xié)商算法中,新增了一些例外的規(guī)則,以允許在語(yǔ)言協(xié)商匹配失敗的情況下,作巧妙的妥協(xié)。

通常,當(dāng)客戶端向服務(wù)器請(qǐng)求一個(gè)不能與瀏覽器Accept-language所匹配的唯一的頁(yè)面時(shí),服務(wù)器會(huì)返回一個(gè)"No Acceptable Variant" 或者 "Multiple Choices" 響應(yīng)。但是,有可能通過(guò)配置Apache,忽略這些情況下的Accept-language ,而返回一個(gè)不是非常匹配客戶請(qǐng)求的文本,以避免這些錯(cuò)誤信息的出現(xiàn)。ForceLanguagePriority指令可以屏蔽這兩種錯(cuò)誤信息,并接管由LanguagePriority指令控制的服務(wù)器裁定機(jī)制。

服務(wù)器還會(huì)在匹配失敗時(shí)嘗試用語(yǔ)言子集來(lái)匹配。例如,如果一個(gè)客戶請(qǐng)求了一個(gè)語(yǔ)言是en-GB的英國(guó)英語(yǔ)的頁(yè)面,而服務(wù)器只支持HTTP/1.1標(biāo)準(zhǔn)的簡(jiǎn)單的en 。(注意,在Accept-Language中指定en-GB而不是en幾乎絕對(duì)是個(gè)錯(cuò)誤,因?yàn)樗坪醢凳鹃喿x的人懂英國(guó)英語(yǔ)卻不懂大眾英語(yǔ)。而不幸的是,許多流行的客戶端的默認(rèn)配置卻是這樣的)。如果沒(méi)有可以匹配的語(yǔ)言,服務(wù)器將會(huì)忽略其語(yǔ)言子集的設(shè)定,返回"No Acceptable Variants"錯(cuò)誤,或者按LanguagePriority指令作妥協(xié)。Apache會(huì)隱含地在客戶可接受語(yǔ)言的列表中附加一個(gè)具有很低品質(zhì)值的父語(yǔ)言,但是,如果客戶請(qǐng)求"en-GB; q=0.9, fr; q=0.8" 那么將返回"fr"的文本,這對(duì)遵循HTTP/1.1標(biāo)準(zhǔn)以使正確配置的瀏覽器能正常工作是必須的。

為了支持用于確定用戶首選語(yǔ)言的高級(jí)技術(shù)(比如cookies或特殊的URL路徑),從2.0.47版本起mod_negotiation模塊開始支持prefer-language環(huán)境變量。如果存在并且包含一個(gè)語(yǔ)言標(biāo)簽,mod_negotiation模塊將會(huì)嘗試選擇一個(gè)匹配的變種。如果不存在這樣的變種,將會(huì)使用上述通常的協(xié)商過(guò)程。

示例

SetEnvIf Cookie "language=(.+)" prefer-language=$1

透明內(nèi)容協(xié)商的擴(kuò)展

Apache在變種列表中使用了一個(gè)新的{encoding ..}元素來(lái)標(biāo)記變種,從而擴(kuò)展了透明內(nèi)容協(xié)商協(xié)議(RFC2295)。實(shí)現(xiàn)RVSA/1.0算法(RFC2296)的目的是識(shí)別列表中被編碼的變種,作為可以被Accept-Encoding請(qǐng)求頭接受的候選變種。在選擇最佳變種之前,RVSA/1.0的實(shí)現(xiàn)不會(huì)對(duì)品質(zhì)因子作四舍五入的運(yùn)算。

超鏈和名稱轉(zhuǎn)換說(shuō)明

如果使用語(yǔ)言協(xié)商,由于文件可以有不止一個(gè)后綴,因此就可以選擇不同的名稱轉(zhuǎn)換,其后綴順序通常是無(wú)關(guān)緊要的(參見mod_mime文檔)。

一個(gè)典型的有MIME類型后綴的文件(如html),其后綴可以是編碼后綴(如gz),也可以是語(yǔ)言變種后綴(如en)

例如:

  • foo.en.html
  • foo.html.en
  • foo.en.html.gz

文件名和有效及無(wú)效超鏈的例子:

文件名 有效超鏈 無(wú)效超鏈
foo.html.en foo
foo.html
-
foo.en.html foo foo.html
foo.html.en.gz foo
foo.html
foo.gz
foo.html.gz
foo.en.html.gz foo foo.html
foo.html.gz
foo.gz
foo.gz.html.en foo
foo.gz
foo.gz.html
foo.html
foo.html.gz.en foo
foo.html
foo.html.gz
foo.gz

可以看出,上表中使用沒(méi)有任何后綴的超鏈(如foo)總是可行的,其優(yōu)點(diǎn)是可以隱藏rsp. 文件的真實(shí)類型,而可以在將來(lái)作更改,比如,不用修改超鏈本身,而改變htmlshtmlcgi 。

如果希望在超鏈中繼續(xù)使用MIME類型(如foo.html),則語(yǔ)言后綴(還包括一個(gè)編碼后綴)必須出現(xiàn)在MIME類型后綴的右邊(如foo.html.en)。

緩沖說(shuō)明

如果緩存中有一個(gè)與特定URL關(guān)聯(lián)的表現(xiàn)形式(representation),那么下一次該URL被請(qǐng)求時(shí),緩存就可以使用它。但是,如果這個(gè)資源在服務(wù)器端是可協(xié)商的,則可能只有第一次請(qǐng)求的變種是正確的,而其后由于緩存中命中而取出的結(jié)果是錯(cuò)誤的。為避免這種情況的發(fā)生,Apache通常把內(nèi)容協(xié)商之后返回的響應(yīng)標(biāo)記為不可以被HTTP/1.1客戶端緩沖。另外Apache還支持HTTP/1.1協(xié)議的功能以允許緩沖已協(xié)商的請(qǐng)求。

對(duì)來(lái)自HTTP/1.0客戶端的請(qǐng)求(瀏覽器或緩存),CacheNegotiatedDocs指令可以允許緩存服從協(xié)商的請(qǐng)求。此指令應(yīng)該出現(xiàn)在主服務(wù)器或虛擬主機(jī)的配置中,沒(méi)有參數(shù),并且對(duì)來(lái)自HTTP/1.1客戶端的請(qǐng)求沒(méi)有影響。

對(duì)于遵守HTTP/1.1規(guī)范的客戶端,Apache發(fā)送一個(gè)Vary應(yīng)答頭以指定該應(yīng)答的協(xié)商變?cè)>彺婵梢允褂眠@個(gè)信息來(lái)判斷一個(gè)其后的請(qǐng)求是否可以從本地副本中提供服務(wù)。為了鼓勵(lì)緩存使用本地副本而不是協(xié)商變?cè)?qǐng)?jiān)O(shè)置force-no-vary環(huán)境變量。

更多信息

更多有關(guān)內(nèi)容協(xié)商的信息,可以參見Alan J. Flavell的Language Negotiation Notes,但是注意,此文檔可能沒(méi)有升級(jí)以包含Apache2.0中的改變。

Previous article: Next article: