目录搜索
首页版本说明从1.3升级到2.0编译时配置的改变运行时配置的改变杂项变化第三方模块从 2.0 升级到 2.2编译时配置的改变运行时配置的改变杂项变化第三方模块Apache 2.1/2.2 版本的新特性核心增强模块增强程序增强针对模块开发者的变化Apache 2.0 版本的新特性核心的增强模块的增强Apache许可证参考手册编译与安装针对心急者的概述要求下载解压配置源代码树编译安装配置测试升级启动Apache是怎样启动的启动时发生错误随系统启动时启动额外信息停止与重新启动简介立即停止优雅重启立即重启优雅停止附录:信号和竞争条件运行时配置指令主配置文件配置文件的语法模块指令的作用域.htaccess文件配置段配置段(容器)的类型文件系统和网络空间虚拟主机代理允许使用哪些指令?配置段的合并内容缓冲简介缓冲概述安全方面的考虑文件句柄缓冲内存缓冲磁盘缓冲服务器全局配置服务器标识文件定位限制资源的使用日志文件安全警告错误日志访问日志日志滚动管道日志虚拟主机其他日志文件从URL到文件系统的映射相关模块和指令DocumentRootDocumentRoot以外的文件用户目录URL重定向反向代理重写引擎File Not Found安全方面的提示保持不断更新和升级ServerRoot目录的权限服务器端包含关于CGI未指定为脚本的CGI指定为脚本的CGI其他动态内容的来源系统设置的保护默认配置下服务器文件的保护观察日志文件动态共享对象(DSO)实现用法概要背景知识优点和缺点内容协商关于内容协商Apache中的内容协商协商的方法打乱品质值透明内容协商的扩展超链和名称转换说明缓冲说明更多信息自定义错误响应行为配置自定义错误响应与重定向地址和端口绑定概述针对IPv6的特殊考虑怎样与虚拟主机协同工作多路处理模块(MPM)简介选择一个MPM默认的MPM环境变量设置环境变量使用环境变量用于特殊目的的环境变量示例处理器的使用什么是处理器?例子程序员注意事项过滤器Apache2中的过滤器智能过虑使用过滤器CGI脚本的Suexec执行开始之前suEXEC的安全模型配置和安装suEXEC启用和禁用suEXEC使用suEXEC调试suEXEC谨防Jabberwock:警告和举例性能调整硬件和操作系统运行时的配置编译时的配置附录:踪迹的详细分析URL重写指南mod_rewrite简介实践方案URL的规划内容的处理对访问的限制其他虚拟主机文档总述虚拟主机支持配置指令基于主机名的虚拟主机基于域名的虚拟主机和基于IP的虚拟主机比较使用基于域名的虚拟主机与旧版浏览器的兼容性基于IP地址的虚拟主机系统需求如何配置Apache设置多个守护进程配置拥有多个虚拟主机的单一守护进程动态配置大量虚拟主机动机概述简单的动态虚拟主机一个实际的个人主页系统在同一个服务器上架设多个主机的虚拟系统更为有效的基于IP地址的虚拟主机使用老版本的Apache使用mod_rewrite实现简单的动态虚拟主机使用mod_rewrite的个人主页系统使用独立的虚拟主机配置文件虚拟主机的普通配置示例在一个IP地址上运行多个基于域名的web站点在多于一个IP的情况下使用基于域名的虚拟主机在不同的IP的地址(比如一个内部和一个外部地址)上提供相同的内容在不同的端口上运行不同的站点建立基于IP的虚拟主机混用基于端口和基于IP的虚拟主机混用基于域名和基于IP的虚拟主机将虚拟主机和代理模块一起使用使用默认虚拟主机将一个基于域名的虚拟主机移植为一个基于IP的虚拟主机使用ServerPath指令深入讨论虚拟主机的匹配解析配置文件虚拟主机匹配小技巧文件描述符限制关于DNS和Apache一个简单示例拒绝服务"主服务器"地址避免这些问题的小技巧附录:进一步的提示常见问题概述SSL/TLS 加密概述文档mod_ssl绪论密码技术证书安全套接字层(SSL)参考兼容性配置指令环境变量自定义日志功能如何...加密方案和强制性高等级安全客户认证和访问控制常见问题解答About The ModuleInstallationConfigurationCertificatesThe SSL Protocolmod_ssl Support如何.../指南概述认证相关模块和指令简介先决条件启用认证允许多人访问可能存在的问题其他认证方法更多信息CGI动态页面简介配置Apache以允许CGI编写CGI程序程序还是不能运行!幕后是怎样操作的?CGI模块/库更多信息服务器端包含简介什么是SSI?配置服务器以允许SSI基本SSI指令附加的例子我还能设置其它什么?执行命令高级SSI技术总结.htaccess文件.htaccess文件工作原理和使用方法(不)使用.htaccess文件的场合指令的生效认证举例服务器端包含(SSI)举例CGI举例疑难解答用户网站目录用户网站目录用UserDir设置文件路径限定哪些用户可以使用此功能启用对每个用户都有效的cgi目录允许用户改变配置对特定平台的说明概述Microsoft Windows其他平台在Microsoft Windows中使用Apache对操作系统的要求下载 Apache for Windows安装 Apache for Windows配置 Apache for Windows以服务方式运行 Apache for Windows作为控制台程序运行Apache测试安装编译Windows下的Apache系统要求命令行编译Developer Studio集成开发环境的工作区编译项目组件在Novell NetWare平台上使用ApacheRequirementsDownloading Apache for NetWareInstalling Apache for NetWareRunning Apache for NetWareConfiguring Apache for NetWareCompiling Apache for NetWare在HP-UX中运行ApacheThe Apache EBCDIC PortOverview of the Apache EBCDIC PortDesign GoalsTechnical SolutionPorting NotesDocument Storage NotesApache Modules' StatusThird Party Modules' Status服务器与支持程序概述httpd语法选项ab语法选项Bugsapachectl语法选项apxs语法选项举例configure语法选项环境变量dbmmanage语法选项Bugshtcacheclean语法选项返回值htdbm语法选项Bugs返回值举例安全方面的考虑限制htdigest语法选项htpasswd语法选项返回值举例安全方面的考虑限制logresolve语法选项rotatelogs语法选项Portabilitysuexec语法选项其他程序log_server_statussplit-logfile杂项文档概述相关标准HTTP推荐标准HTML推荐标准认证语言/国家代码Apache 模块描述模块的术语说明状态源代码文件模块标识符兼容性描述指令的术语说明语法默认值(Default)作用域(Context)覆盖项(Override)状态模块(Module)兼容性(Compatibility)Apache核心(Core)特性AcceptFilterAcceptPathInfoAccessFileNameAddDefaultCharsetAddOutputFilterByTypeAllowEncodedSlashesAllowOverrideAuthNameAuthTypeCGIMapExtensionContentDigestDefaultType<Directory><DirectoryMatch>DocumentRootEnableMMAPEnableSendfileErrorDocumentErrorLogFileETag<Files><FilesMatch>ForceTypeHostnameLookups<IfDefine><IfModule>IncludeKeepAliveKeepAliveTimeout<Limit><LimitExcept>LimitInternalRecursionLimitRequestBodyLimitRequestFieldsLimitRequestFieldSizeLimitRequestLineLimitXMLRequestBody<Location><LocationMatch>LogLevelMaxKeepAliveRequestsNameVirtualHostOptionsRequireRLimitCPURLimitMEMRLimitNPROCSatisfyScriptInterpreterSourceServerAdminServerAliasServerNameServerPathServerRootServerSignatureServerTokensSetHandlerSetInputFilterSetOutputFilterTimeOutTraceEnableUseCanonicalNameUseCanonicalPhysicalPort<VirtualHost>Apache MPM 公共指令AcceptMutexCoreDumpDirectoryEnableExceptionHookGracefulShutdownTimeoutGroupListenListenBackLogLockFileMaxClientsMaxMemFreeMaxRequestsPerChildMaxSpareThreadsMinSpareThreadsPidFileReceiveBufferSizeScoreBoardFileSendBufferSizeServerLimitStartServersStartThreadsThreadLimitThreadsPerChildThreadStackSizeUserApache MPM beosMaxRequestsPerThreadCoreDumpDirectoryGroupListenListenBacklogMaxClientsMaxMemFreeMaxSpareThreadsMinSpareThreadsPidFileReceiveBufferSizeScoreBoardFileSendBufferSizeStartThreadsUserApache MPM eventAcceptMutexCoreDumpDirectoryEnableExceptionHookGroupListenListenBacklogLockFileMaxClientsMaxMemFreeMaxRequestsPerChildMaxSpareThreadsMinSpareThreadsPidFileScoreBoardFileSendBufferSizeServerLimitStartServersThreadLimitThreadsPerChildThreadStackSizeUserApache MPM netwareMaxThreadsListenListenBacklogMaxMemFreeMaxRequestsPerChildMaxSpareThreadsMinSpareThreadsReceiveBufferSizeSendBufferSizeStartThreadsThreadStackSizeApache MPM os2GroupListenListenBacklogMaxRequestsPerChildMaxSpareThreadsMinSpareThreadsPidFileReceiveBufferSizeSendBufferSizeStartServersUserApache MPM prefork工作方式MaxSpareServersMinSpareServersAcceptMutexCoreDumpDirectoryEnableExceptionHookGroupListenListenBacklogLockFileMaxClientsMaxMemFreeMaxRequestsPerChildPidFileReceiveBufferSizeScoreBoardFileSendBufferSizeServerLimitStartServersUserApache MPM winntWin32DisableAcceptExCoreDumpDirectoryListenListenBacklogMaxMemFreeMaxRequestsPerChildPidFileReceiveBufferSizeScoreBoardFileSendBufferSizeThreadLimitThreadsPerChildThreadStackSizeApache MPM worker工作方式AcceptMutexCoreDumpDirectoryEnableExceptionHookGroupListenListenBacklogLockFileMaxClientsMaxMemFreeMaxRequestsPerChildMaxSpareThreadsMinSpareThreadsPidFileReceiveBufferSizeScoreBoardFileSendBufferSizeServerLimitStartServersThreadLimitThreadsPerChildThreadStackSizeUserApache Module mod_actionsAction指令Script指令Apache Module mod_alias处理顺序AliasAliasMatchRedirectRedirectMatchRedirectPermanentRedirectTempScriptAliasScriptAliasMatchApache Module mod_asis用法Apache Module mod_auth_basicAuthBasicAuthoritativeAuthBasicProviderApache Module mod_auth_digest使用摘要认证配合 MS Internet Explorer 6 工作AuthDigestAlgorithmAuthDigestDomainAuthDigestNcCheckAuthDigestNonceFormatAuthDigestNonceLifetimeAuthDigestProviderAuthDigestQopAuthDigestShmemSizeApache Module mod_authn_alias示例<AuthnProviderAlias>Apache Module mod_authn_anon示例AnonymousAnonymous_LogEmailAnonymous_MustGiveEmailAnonymous_NoUserIDAnonymous_VerifyEmailApache Module mod_authn_dbd配置示例AuthDBDUserPWQueryAuthDBDUserRealmQueryApache Module mod_authn_dbmAuthDBMTypeAuthDBMUserFileApache Module mod_authn_defaultAuthDefaultAuthoritativeApache Module mod_authn_fileAuthUserFileApache Module mod_authnz_ldapContentsOperationThe require Directives举例Using TLSUsing SSLUsing Microsoft FrontPage with mod_authnz_ldapAuthLDAPBindDNAuthLDAPBindPasswordAuthLDAPCharsetConfigAuthLDAPCompareDNOnServerAuthLDAPDereferenceAliasesAuthLDAPGroupAttributeAuthLDAPGroupAttributeIsDNAuthLDAPRemoteUserIsDNAuthLDAPUrlAuthzLDAPAuthoritativeApache Module mod_authz_dbmAuthDBMGroupFileAuthzDBMAuthoritativeAuthzDBMTypeApache Module mod_authz_defaultAuthzDefaultAuthoritativeApache Module mod_authz_groupfileAuthGroupFileAuthzGroupFileAuthoritativeApache Module mod_authz_hostAllowDenyOrderApache Module mod_authz_owner配置示例AuthzOwnerAuthoritativeApache Module mod_authz_userAuthzUserAuthoritativeApache Module mod_autoindexAutoindex Request Query ArgumentsAddAltAddAltByEncodingAddAltByTypeAddDescriptionAddIconAddIconByEncodingAddIconByTypeDefaultIconHeaderNameIndexIgnoreIndexOptionsIndexOrderDefaultIndexStyleSheetReadmeNameApache Module mod_cacheRelated Modules and Directives配置示例CacheDefaultExpireCacheDisableCacheEnableCacheIgnoreCacheControlCacheIgnoreHeadersCacheIgnoreNoLastModCacheLastModifiedFactorCacheMaxExpireCacheStoreNoStoreCacheStorePrivateApache Module mod_cern_metaMetaDirMetaFilesMetaSuffixApache Module mod_cgiCGI 环境变量CGI 脚本的调试ScriptLogScriptLogBufferScriptLogLengthApache Module mod_cgidScriptSockScriptLogScriptLogBufferScriptLogLengthApache Module mod_charset_liteCommon ProblemsCharsetDefaultCharsetOptionsCharsetSourceEncApache Module mod_davEnabling WebDAVSecurity IssuesComplex ConfigurationsDavDavDepthInfinityDavMinTimeoutApache Module mod_dav_fsDavLockDBApache Module mod_dav_lockDavGenericLockDBApache Module mod_dbdConnection PoolingApache DBD APISQL Prepared StatementsDBDExptimeDBDKeepDBDMaxDBDMinDBDParamsDBDPersistDBDPrepareSQLDBDriverApache Module mod_deflate配置举例启用压缩代理服务器DeflateBufferSizeDeflateCompressionLevelDeflateFilterNoteDeflateMemLevelDeflateWindowSizeApache Module mod_dirDirectoryIndexDirectorySlashApache Module mod_disk_cacheCacheDirLengthCacheDirLevelsCacheMaxFileSizeCacheMinFileSizeCacheRootApache Module mod_dumpio启用dumpio支持DumpIOInputDumpIOOutputApache Module mod_echoProtocolEchoApache Module mod_envPassEnvSetEnvUnsetEnvApache Module mod_exampleCompiling the example moduleUsing the mod_example ModuleExampleApache Module mod_expires交替间隔语法ExpiresActiveExpiresByTypeExpiresDefaultApache Module mod_ext_filter举例ExtFilterDefineExtFilterOptionsApache Module mod_file_cacheUsing mod_file_cacheCacheFileMMapFileApache Module mod_filterSmart FilteringFilter DeclarationsConfiguring the ChainExamplesProtocol HandlingFilterChainFilterDeclareFilterProtocolFilterProviderFilterTraceApache Module mod_headers处理顺序前处理和后处理举例HeaderRequestHeaderApache Module mod_identIdentityCheckIdentityCheckTimeoutApache Module mod_imagemapNew FeaturesImagemap FileExample MapfileReferencing your mapfileImapBaseImapDefaultImapMenuApache Module mod_includeEnabling Server-Side IncludesPATH_INFO with Server Side IncludesBasic ElementsInclude VariablesVariable SubstitutionFlow Control ElementsSSIEndTagSSIErrorMsgSSIStartTagSSITimeFormatSSIUndefinedEchoXBitHackApache Module mod_info安全问题选择哪些信息可以被显示已知的局限AddModuleInfoApache Module mod_isapi用法附加注释程序员注记ISAPIAppendLogToErrorsISAPIAppendLogToQueryISAPICacheFileISAPIFakeAsyncISAPILogNotSupportedISAPIReadAheadBufferApache Module mod_ldap示例配置LDAP 连接池LDAP 缓冲使用SSL/TLSSSL/TLS 证书LDAPCacheEntriesLDAPCacheTTLLDAPConnectionTimeoutLDAPOpCacheEntriesLDAPOpCacheTTLLDAPSharedCacheFileLDAPSharedCacheSizeLDAPTrustedClientCertLDAPTrustedGlobalCertLDAPTrustedModeLDAPVerifyServerCertApache Module mod_log_config定制日志文件格式安全考虑BufferedLogsCookieLogCustomLogLogFormatTransferLogApache Module mod_log_forensic定制日志文件格式安全考虑ForensicLogApache Module mod_logio定制日志文件格式Apache Module mod_mem_cacheMCacheMaxObjectCountMCacheMaxObjectSizeMCacheMaxStreamingBufferMCacheMinObjectSizeMCacheRemovalAlgorithmMCacheSizeApache Module mod_mime带多扩展名的文件内容编码字符集和语言AddCharsetAddEncodingAddHandlerAddInputFilterAddLanguageAddOutputFilterAddTypeDefaultLanguageModMimeUsePathInfoMultiviewsMatchRemoveCharsetRemoveEncodingRemoveHandlerRemoveInputFilterRemoveLanguageRemoveOutputFilterRemoveTypeTypesConfigApache Module mod_mime_magic"Magic文件"的格式性能问题注意MimeMagicFileApache Module mod_negotiation类型表MultiViewsCacheNegotiatedDocsForceLanguagePriorityLanguagePriorityApache Module mod_nw_sslNWSSLTrustedCertsNWSSLUpgradeableSecureListenApache Module mod_proxy正向和反向代理简单示例控制对代理服务器的访问缓慢启动局域网代理协议调整请求体AllowCONNECTNoProxy<Proxy>ProxyBadHeaderProxyBlockProxyDomainProxyErrorOverrideProxyIOBufferSize<ProxyMatch>ProxyMaxForwardsProxyPassProxyPassReverseProxyPassReverseCookieDomainProxyPassReverseCookiePathProxyPreserveHostProxyReceiveBufferSizeProxyRemoteProxyRemoteMatchProxyRequestsProxyTimeoutProxyViaApache Module mod_proxy_ajpOverview of the protocolBasic Packet StructureRequest Packet StructureResponse Packet StructureApache Module mod_proxy_balancerLoad balancer scheduler algorithmRequest Counting AlgorithmWeighted Traffic Counting AlgorithmEnabling Balancer Manager SupportApache Module mod_proxy_connectApache Module mod_proxy_ftp为什么xxx类型的文件不能从FTP下载?如何强制文件xxx使用FTP的ASCII形式下载?我如何使用FTP上传?我如何能访问我自己home目录以外的FTP文件?我如何才能在浏览器的URL框中隐藏FTP的明文密码?Apache Module mod_proxy_httpApache Module mod_rewrite特殊字符的引用环境变量实用方案RewriteBaseRewriteCondRewriteEngineRewriteLockRewriteLogRewriteLogLevelRewriteMapRewriteOptionsRewriteRuleApache Module mod_setenvifBrowserMatchBrowserMatchNoCaseSetEnvIfSetEnvIfNoCaseApache Module mod_so为Windows创建可加载模块LoadFileLoadModuleApache Module mod_spelingCheckSpellingApache Module mod_ssl环境变量Custom Log FormatsSSLCACertificateFileSSLCACertificatePathSSLCADNRequestFileSSLCADNRequestPathSSLCARevocationFileSSLCARevocationPathSSLCertificateChainFileSSLCertificateFileSSLCertificateKeyFileSSLCipherSuiteSSLCryptoDeviceSSLEngineSSLHonorCipherOrderSSLMutexSSLOptionsSSLPassPhraseDialogSSLProtocolSSLProxyCACertificateFileSSLProxyCACertificatePathSSLProxyCARevocationFileSSLProxyCARevocationPathSSLProxyCipherSuiteSSLProxyEngineSSLProxyMachineCertificateFileSSLProxyMachineCertificatePathSSLProxyProtocolSSLProxyVerifySSLProxyVerifyDepthSSLRandomSeedSSLRequireSSLRequireSSLSSLSessionCacheSSLSessionCacheTimeoutSSLUserNameSSLVerifyClientSSLVerifyDepthApache Module mod_statusEnabling Status Support自动更新Machine Readable Status FileExtendedStatusApache Module mod_suexecSuexecUserGroupApache Module mod_unique_idTheoryApache Module mod_userdirUserDirApache Module mod_usertrackLogging2-digit or 4-digit dates for cookies?CookieDomainCookieExpiresCookieNameCookieStyleCookieTrackingApache Module mod_version<IfVersion>Apache Module mod_vhost_alias目录名称的转换示例VirtualDocumentRootVirtualDocumentRootIPVirtualScriptAliasVirtualScriptAliasIP开发者文档OverviewTopicsExternal ResourcesApache API notesBasic conceptsHow handlers workResource allocation and resource poolsConfigurationDebugging Memory Allocation in APRAvailable debugging optionsAllowable CombinationsActivating Debugging OptionsDocumenting Apache 2.0Apache 2.0 Hook FunctionsCreating a hook functionHooking the hookConverting Modules from Apache 1.3 to Apache 2.0The easier changes ...The messier changes...Request Processing in Apache 2.0The Request Processing CycleThe Request Parsing PhaseThe Security PhaseThe Preparation PhaseThe Handler PhaseHow Filters Work in Apache 2.0Filter TypesHow are filters inserted?AsisExplanations词汇和索引词汇表模块索引指令索引指令速查译者声明
文字

Apache MPM 公共指令

说明 收集了被多个多路处理模块(MPM)实现的公共指令
状态 MPM

AcceptMutex 指令

说明 Apache用于串行化多个子进程在(多个)网络套接字(socket)上接受请求的方法
语法 AcceptMutex Default|method
默认值 AcceptMutex Default
作用域 server config
状态 MPM
模块 prefork, worker

AcceptMutex指令用于设置串行化多个子进程在(多个)网络套接字上接受请求的方法。在2.0版本以前,只能在编译时设定此方法。应当在这里使用的最佳方法取决于不同的硬件体系结构和操作系统。欲知详情,请参见性能调节文档。

如果设置为Default ,那么将会使用编译时自动选择的默认值。其他可用的方法在下面列出。注意,并不是所有的方法在所有的平台上都是可用的,如果指定了一个不可用的方法,将会在错误日志中记录下这个不可用的方法。

flock
这种方法调用系统函数flock(2)来锁定一个加锁文件(其位置取决于LockFile指令)。
fcntl
这种方法调用系统函数fcntl(2)来锁定一个加锁文件(其位置取决于LockFile指令)。
posixsem
(2.0及更新版本)这种方法使用了POSIX信号灯。如果一个运行中的线程占有了互斥segfault ,则信号灯的所有者将不会被恢复,从而导致服务器的挂起和失去响应。
pthread
(1.3及更新版本)这种方法使用了POSIX互斥,按理应该可以用于所有完整实现了POSIX线程规范的体系中,但是似乎只能用在Solaris2.5及更新版本中,甚至只能在某种配置下才正常运作。如果遇到这种情况,则应该提防服务器的挂起和失去响应。只提供静态内容的服务器可能不受影响。
sysvsem
(1.3及更新版本)这种方案使用SysV风格的信号灯以实现互斥。不幸的是,SysV风格的信号灯有一些副作用,其一是,Apache有可能不能在结束以前释放这种信号灯(见ipcs()的man page),另外,这种信号灯API给与网络服务器有相同uid的CGI提供了拒绝服务攻击的机会(所有CGI,除非用了类似suexeccgiwrapper)。鉴于此,在多数体系中都不用这种方法,除了IRIX(因为加锁文件的方法在IRIX中代价太高)。

如果你想知道编译时自动选择的默认值,你可以将LogLevel设为debug ,这样默认的AcceptMutex就会记录到ErrorLog中。

警告

在大多数系统上,使用pthread时,如果一个子进程在持有AcceptCntl互斥信号时异常中止,服务器将会挂起和失去响应,此时必须手动重启服务器才能解决问题。但Solaris是一个例外,因为它提供了一个机制(Apache利用了该机制),允许在一个持有互斥信号的子进程异常中止后恢复互斥信号。

如果你的操作系统实现了pthread_mutexattr_setrobust_np()函数,基本上就能安全的使用pthread选项。

CoreDumpDirectory 指令

说明 Apache使用的内核转储目录
语法 CoreDumpDirectory directory
默认值 参见说明
作用域 server config
状态 MPM
模块 beos, mpm_winnt, prefork, worker

这个指令用于控制Apache使用的内核转储目录。默认位于ServerRoot下,因为这个目录通常对于运行服务器的用户是不可写的,内核转储一般也就不会写入内容。如果你在调试中需要内核转储,你可以用这个指令来指定另外一个目录。

Linux上的内核转储

如果Apache以root身份启动并切换至其他用户,即使指定的转储目录对进程是可写的,Linux内核也将禁止Apache进行内核转储。但是Apache2.0.46及以后的版本在你明确指定CoreDumpDirectory的情况下,能够在Linux2.4以上的版本中强制实现内核转储。

EnableExceptionHook 指令

说明 在子进程崩溃以后启用一个钩子来运行异常处理程序
语法 EnableExceptionHook On|Off
默认值 EnableExceptionHook Off
作用域 server config
状态 MPM
模块 prefork, worker
兼容性 仅在 Apache 2.0.49 及以后的版本中可用

因为安全原因,这个指令仅在编译时使用了 --enable-exception-hook 选项的情况下才可用。它会在一个子进程崩溃以后启用一个钩子(hook)来运行一个外部模块以做些后继处理。

目前有两个模块(mod_whatkilledusmod_backtrace)可以被钩子使用。请参见Jeff Trawick的EnableExceptionHook site以获得更多信息。

GracefulShutdownTimeout 指令

说明 指定优雅停止服务器的超时秒数
语法 GracefulShutDownTimeout seconds
默认值 GracefulShutDownTimeout 0
作用域 server config
状态 MPM
模块 prefork, worker, event
兼容性 仅在 Apache 2.2 及以后的版本中可用

GracefulShutdownTimeout设置服务器在收到"优雅停止"信号后最多允许使用多少秒来处理尚未完成的连接,超时后服务器将强行退出。

设为"0"表示永不超时,也就是服务器必须在处理完所有尚未完成的请求之后才能退出。

Group 指令

说明 对请求提供服务的Apache子进程运行时的用户组
语法 Group unix-group
默认值 Group #-1
作用域 server config
状态 MPM
模块 beos, mpmt_os2, prefork, worker
兼容性 Apache2.0以后只对全局配置有效

Group指令指定了用于对客户端请求提供服务的Apache子进程运行时的用户组。为了使用这个指令,Apache必须以root初始化启动,否则在切换用户组时会失败,并继续以初始化启动时的用户组运行。Unix-group可以是下列之一:

用户组的名称
通过名称引用组。
"#"号后跟一个组编号(GID)
通过编号引用组。

示例

Group www-group

建议你专门为Apache服务器新建一个用户组。一些管理员使用nobody用户,但是这并非总是可用或是合适的。

安全

不要将Group(或User)设置成root ,除非你明确知道自己在做什么,并且明白其风险所在。

特别提示:在<VirtualHost>段中使用该指令已经不再被支持了。你可以使用suexecSuexecUserGroup指令来达到这个目的。

注意

虽然Group指令也存在于beosmpmt_os2MPM中,但是事实上没用任何用处,只不过是个摆饰罢了。

Listen 指令

说明 服务器监听的IP地址和端口
语法 Listen [IP-address:]portnumber [protocol]
作用域 server config
状态 MPM
模块 beos, mpm_netware, mpm_winnt, mpmt_os2, prefork, worker, event
兼容性 Apache2.0以后必须设置该指令,protocol参数仅在2.1.5及以后版本中可用

Listen指令指示Apache只在指定的IP地址和端口上监听;默认情况下Apache会在所有IP地址上监听。Listen是一个必须设置的指令。如果在配置文件中找不到这个指令,服务器将无法启动。这和先前的版本不一样。

Listen指令指定服务器在那个端口或地址和端口的组合上监听接入请求。如果只指定一个端口,服务器将在所有地址上监听该端口。如果指定了地址和端口的组合,服务器将在指定地址的指定端口上监听。

使用多个Listen指令可以指定多个不同的监听端口和/或地址端口组合。服务器将会对列出的所有端口和地址端口组合上的请求作出应答。

例如,想要服务器接受80和8000端口上的请求,可以这样设置:

Listen 80
Listen 8000

为了让服务器在两个确定的地址端口组合上接受请求,可以这样设置:

Listen 192.170.2.1:80
Listen 192.170.2.5:8000

IPv6地址必须像下面的例子一样,用方括号括起来:

Listen [2001:db8::a00:20ff:fea7:ccea]:80

可选的protocol参数在大多数情况下并不需要。若未指定该参数,则将为443端口使用默认的https协议,为其它端口使用http协议。在这里指定协议是为了确定使用哪个模块来处理请求,以及根据AcceptFilter指令根据不同的协议有针对性的进行优化。

仅在使用非标准端口时才需要指定protocol参数。比如在8443端口运行https协议:

Listen 192.170.2.1:8443 https

错误条件

多个Listen指令指定了同一个地址和端口的组合后,会导致"Address already in use"错误。

参见

  • DNS问题
  • 地址和端口绑定

ListenBackLog 指令

说明 半链接(pending connection)队列的最大长度
语法 ListenBacklog backlog
默认值 ListenBacklog 511
作用域 server config
状态 MPM
模块 beos, mpm_netware, mpm_winnt, mpmt_os2, prefork, worker

半链接(pending connection)队列的最大长度。一般不需要调整此项参数,然而在一些系统上,必须增大此值以抵御TCP SYN 洪水攻击。参见操作系统的listen(2)系统调用的后备参数。

操作系统常常将此值限制为一个较小的数字,具体根据操作系统的不同而不同。需要注意的是,许多操作系统并不是正好使用后备数值,而是取决于设置的值(通常大于后备值)。

LockFile 指令

说明 接受串行锁文件的位置
语法 LockFile filename
默认值 LockFile logs/accept.lock
作用域 server config
状态 MPM
模块 prefork, worker

LockFile指令设置当AcceptMutex指令的值是fcntlflock的时候,Apache使用的锁文件的位置。该指令通常保持它的默认值。改变默认值的主要原因是logs目录位于一个NFS文件系统上,因为锁文件必须位于本地磁盘上。主服务器进程的PID会自动添加到文件名后面。

安全

最好不要将此文件放在任何人都可以具有写权限的目录(比如/var/tmp)中,因为别人可以通过建立一个与服务器企图建立的锁文件同名的文件,来阻止服务器启动,从而造成一个拒绝服务攻击。

参见

  • AcceptMutex

MaxClients 指令

说明 允许同时伺服的最大接入请求数量
语法 MaxClients number
默认值 参见下面的说明
作用域 server config
状态 MPM
模块 beos, prefork, worker

MaxClients指令设置了允许同时伺服的最大接入请求数量。任何超过MaxClients限制的请求都将进入等候队列,直到达到ListenBacklog指令限制的最大值为止。一旦一个链接被释放,队列中的请求将得到服务。

对于非线程型的MPM(也就是prefork),MaxClients表示可以用于伺服客户端请求的最大子进程数量,默认值是256。要增大这个值,你必须同时增大ServerLimit

对于线程型或者混合型的MPM(也就是beosworker),MaxClients表示可以用于伺服客户端请求的最大线程数量。线程型的beos的默认值是50。对于混合型的MPM默认值是16(ServerLimit)乘以25(ThreadsPerChild)的结果。因此要将MaxClients增加到超过16个进程才能提供的时候,你必须同时增加ServerLimit的值。

MaxMemFree 指令

说明 主内存分配程序在未调用free()的情况下允许持有的最大自由内存数量(KB)
语法 MaxMemFree KBytes
默认值 MaxMemFree 0
作用域 server config
状态 MPM
模块 beos, mpm_netware, prefork, worker, mpm_winnt

MaxMemFree指令用于设置主内存分配程序在未调用free()的情况下允许持有的最大自由内存数量(KB)。若未设置或设置为"0",将表示无限制。

MaxRequestsPerChild 指令

说明 每个子进程在其生存期内允许伺服的最大请求数量
语法 MaxRequestsPerChild number
默认值 MaxRequestsPerChild 10000
作用域 server config
状态 MPM
模块 mpm_netware, mpm_winnt, mpmt_os2, prefork, worker

MaxRequestsPerChild指令设置每个子进程在其生存期内允许伺服的最大请求数量。到达MaxRequestsPerChild的限制后,子进程将会结束。如果MaxRequestsPerChild为"0",子进程将永远不会结束。

不同的默认值

mpm_netwarempm_winnt上的默认值是"0"。

MaxRequestsPerChild设置成非零值有两个好处:

  • 可以防止(偶然的)内存泄漏无限进行,从而耗尽内存。
  • 给进程一个有限寿命,从而有助于当服务器负载减轻的时候减少活动进程的数量。

注意

对于KeepAlive链接,只有第一个请求会被计数。事实上,它改变了每个子进程限制最大链接数量的行为。

MaxSpareThreads 指令

说明 最大空闲线程数
语法 MaxSpareThreads number
默认值 参见下面的说明
作用域 server config
状态 MPM
模块 beos, mpm_netware, mpmt_os2, worker

设置最大空闲线程数。不同的MPM对这个指令的处理是不一样的:

worker的默认值是"250"。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太多,子进程将杀死多余的空闲线程。

mpm_netware的默认值是"100"。既然这个MPM只运行单独一个子进程,此MPM当然亦基于整个服务器监视空闲线程数。

beosmpmt_os2的工作方式与mpm_netware差不多,beos的默认值是"50";mpmt_os2的默认值是"10"。

限制

MaxSpareThreads的取值范围是有限制的。Apache将按照如下限制自动修正你设置的值:

  • mpm_netware要求其小于等于MinSpareThreads
  • worker要求其大于等于MinSpareThreads加上ThreadsPerChild的和

参见

  • MinSpareThreads
  • StartServers

MinSpareThreads 指令

说明 最小空闲线程数
语法 MinSpareThreads number
默认值 参见下面的说明
作用域 server config
状态 MPM
模块 beos, mpm_netware, mpmt_os2, worker

设置最小空闲线程数,用于处理可能到来的突发请求。不同的MPM对这个指令的处理是不一样的:

worker的默认值是"75"。这个MPM将基于整个服务器监视空闲线程数。如果服务器中总的空闲线程数太少,子进程将产生新的空闲线程。

mpm_netware的默认值是"10"。既然这个MPM只运行单独一个子进程,此MPM当然亦基于整个服务器监视空闲线程数。

beosmpmt_os2的工作方式与mpm_netware差不多,beos的默认值是"1";mpmt_os2的默认值是"5"。

参见

  • MaxSpareThreads
  • StartServers

PidFile 指令

说明 服务器用于记录父进程(监控进程)PID的文件
语法 PidFile filename
默认值 PidFile logs/httpd.pid
作用域 server config
状态 MPM
模块 beos, mpm_winnt, mpmt_os2, prefork, worker

PidFile指令设置服务器用于记录父进程(监控进程)PID的文件。如果指定的不是绝对路径,那么将视为基于ServerRoot的相对路径。

示例

PidFile /var/run/apache.pid

这个文件通常用来便于给服务器父进程发送一个信号,用于关闭或重启服务器,以重新打开ErrorLogTransferLog文件、重新读取配置文件。这些可以通过发送一个"SIGHUP"(kill -1)信号到PidFile记录的进程PID。

PidFile和其他日志文件一样要注意放置位置和安全问题。

注意

从Apache2开始,推荐使用apachectl脚本来启动或停止服务器。

ReceiveBufferSize 指令

说明 TCP接收缓冲区大小(字节)
语法 ReceiveBufferSize bytes
默认值 ReceiveBufferSize 0
作用域 server config
状态 MPM
模块 beos, mpm_netware, mpm_winnt, mpmt_os2, prefork, worker

这个指令设置服务器的TCP接收缓冲区的大小(字节)。提高这个值会导致两个后果:高速度和高潜伏时间(100ms左右)。

如果设置为"0",将使用操作系统默认值。

ScoreBoardFile 指令

说明 存储子进程协调数据(coordination data)的文件
语法 ScoreBoardFile file-path
默认值 ScoreBoardFile logs/apache_status
作用域 server config
状态 MPM
模块 beos, mpm_winnt, prefork, worker

Apache使用记分板(scoreboard)在父进程和子进程之间进行通信。一些体系结构要求有一个文件来帮助通信。如果未指定这个文件,Apache会首先尝试在匿名共享内存中建立完整的记分板(scoreboard),若失败,将继续尝试使用基于文件的共享存储器在磁盘上建立这个文件。若利用这个指令指定这个文件的位置,则Apache将总是在磁盘上建立这个文件。

示例

ScoreBoardFile /var/run/apache_status

基于文件的共享存储器对于使用直接访问记分板(scoreboard)的第三方程序是很有用的。

ScoreBoardFile放置在RAM disk中会对速度提升有很大帮助。但是同其他日志文件一样也要注意放置位置和安全问题。

参见

  • 停止和重启Apache

SendBufferSize 指令

说明 TCP发送缓冲区大小(字节)
语法 SendBufferSize bytes
默认值 SendBufferSize 0
作用域 server config
状态 MPM
模块 beos, mpm_netware, mpm_winnt, mpmt_os2, prefork, worker

这个指令设置服务器的TCP发送缓冲区的大小(字节)。提高这个值会导致两个后果:高速度和高潜伏时间(100ms左右)。

如果设置为"0",将使用操作系统默认值。

ServerLimit 指令

说明 服务器允许配置的进程数上限
语法 ServerLimit number
默认值 参见下面的说明
作用域 server config
状态 MPM
模块 prefork, worker

对于preforkMPM,这个指令设置了MaxClients最大允许配置的数值。对于workerMPM,这个指令和ThreadLimit结合使用设置了MaxClients最大允许配置的数值。任何在重启期间对这个指令的改变都将被忽略,但对MaxClients的修改却会生效。

使用这个指令时要特别当心。如果将ServerLimit设置成一个高出实际需要许多的值,将会有过多的共享内存被分配。如果将ServerLimitMaxClients设置成超过系统的处理能力,Apache可能无法启动,或者系统将变得不稳定。

对于preforkMPM,只有在你需要将MaxClients设置成高于默认值256的时候才需要使用这个指令。要将此指令的值保持和MaxClients一样。

对于workerMPM,只有在你需要将MaxClientsThreadsPerChild设置成需要超过默认值16个子进程的时候才需要使用这个指令。不要将该指令的值设置的比MaxClients ThreadsPerChild需要的子进程数量高。

注意

Apache在编译时内部有一个硬限制"ServerLimit 20000"(对于preforkMPM为"ServerLimit 200000")。你不能超越这个限制。

参见

  • 停止和重启Apache

StartServers 指令

说明 服务器启动时建立的子进程数
语法 StartServers number
默认值 参见下面的说明
作用域 server config
状态 MPM
模块 mpmt_os2, prefork, worker

StartServers指令设置了服务器启动时建立的子进程数量。因为子进程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数。

不同的MPM默认值也不一样。对于worker默认值是"3"。对于prefork默认值是"5",mpmt_os2是"2"。

StartThreads 指令

说明 服务器启动时建立的线程数
语法 StartThreads number
默认值 参见下面的说明
作用域 server config
状态 MPM
模块 beos, mpm_netware

设置了服务器启动时建立的线程数量。因为线程数量动态的取决于负载的轻重,所有一般没有必要调整这个参数。

对于mpm_netware ,默认值是"50",由于只有一个进程,因此所有的线程都将用于伺服请求。

对于beos ,默认值是"10",同样也是所有的线程都将用于伺服请求。

ThreadLimit 指令

说明 每个子进程可配置的线程数上限
语法 ThreadLimit number
默认值 参见下面的说明
作用域 server config
状态 MPM
模块 mpm_winnt, worker
兼容性 仅用于2.0.41及以后版本的mpm_winnt

这个指令设置了每个子进程可配置的线程数ThreadsPerChild上限。任何在重启期间对这个指令的改变都将被忽略,但对ThreadsPerChild的修改却会生效。

使用这个指令时要特别当心。如果将ThreadLimit设置成一个高出ThreadsPerChild实际需要很多的值,将会有过多的共享内存被分配。如果将ThreadLimitThreadsPerChild设置成超过系统的处理能力,Apache可能无法启动,或者系统将变得不稳定。该指令的值应当和ThreadsPerChild可能达到的最大值保持一致。

对于mpm_winntThreadLimit的默认值是1920;对于其他MPM这个值是64

注意

Apache在编译时内部有一个硬性的限制"ThreadLimit 20000"(对于mpm_winnt是"ThreadLimit 15000"),你不能超越这个限制。

ThreadsPerChild 指令

说明 每个子进程建立的线程数
语法 ThreadsPerChild number
默认值 参见下面的说明
作用域 server config
状态 MPM
模块 mpm_winnt, worker

这个指令设置了每个子进程建立的线程数。子进程在启动时建立这些线程后就不再建立新的线程了。如果使用一个类似于mpm_winnt只有一个子进程的MPM,这个数值要足够大,以便可以处理可能的请求高峰。如果使用一个类似于worker有多个子进程的MPM,每个子进程所拥有的所有线程的总数要足够大,以便可以处理可能的请求高峰。

对于mpm_winntThreadsPerChild的默认值是64;对于其他MPM是25

ThreadStackSize 指令

说明 处理客户端连接的线程使用的栈尺寸(字节)
语法 ThreadStackSize size
默认值 NetWare上为65536;其它平台上等于操作系统默认值
作用域 server config
状态 MPM
模块 mpm_netware, mpm_winnt, worker
兼容性 仅在 Apache 2.1 及以后的版本中可用

ThreadStackSize指令设置了处理客户端连接(包括调用模块以协助处理)的线程允许使用的最大栈尺寸(字节)。在大多数情况下,操作系统默认的栈尺寸很合理,但是在某些情况下,需要调整这个值:

  • 在默认栈尺寸较小的平台上(比如HP-UX),Apache可能会在使用一些需要较大栈尺寸的第三方模块时崩溃。这样的问题可以通过将ThreadStackSize设置为一个较大的值来解决。这种调整应当仅仅在第三方模块提供者明确要求的情况下才需要,或者是您通过诊断确定是由于栈空间太小而导致崩溃。
  • 在某些平台上,如果默认的栈空间大于服务器运行所需空间,那么将ThreadStackSize值降低到小于操作系统默认值可以让每个进程中允许生成的最大线程数量增加。这种类型的调整应该仅在测试环境中使用,并且对所有服务器进程进行充分的测试,因为处理某些罕见的请求需要较大的栈空间。一个很小的服务器配置变化就有可能使得当前的ThreadStackSize设置变得不合适。

User 指令

说明 实际服务于请求的子进程运行时的用户
语法 User unix-userid
默认值 User #-1
作用域 server config
状态 MPM
模块 prefork, worker
兼容性 2.0版本起仅在全局服务器配置中可用

User指令用于设置实际提供服务的子进程的用户。为了使用这个指令,服务器必须以root身份启动和初始化。如果你以非root身份启动服务器,子进程将不能够切换至非特权用户,并继续以启动服务器的原始用户身份运行。如果确实以root用户启动了服务器,那么父进程将仍然以root身份运行。Unix-userid是下列值之一:

一个用户名
通过用户名引用用户
"#"号后面跟一个用户编号
通过用户编号引用用户

用于运行子进程的用户必须是一个没有特权的用户,这样才能保证子进程无权访问那些不想为外界所知的文件,同样的,该用户亦需没有执行那些不应当被外界执行的程序的权限。强烈推荐你专门为Apache子进程建立一个单独的用户和组。一些管理员使用nobody用户,但是这并不能总是符合要求,因为可能有其他程序也在使用这个用户。

安全

不要将User(或Group)设置成root ,除非你明确知道自己在做什么,并且明白其风险所在。

特别提示:在<VirtualHost>段中使用该指令已经不再被支持了。你可以使用suexecSuexecUserGroup指令来达到这个目的。

注意

虽然User指令也存在于beosmpmt_os2MPM中,但是事实上没用任何用处,只不过是个摆饰罢了。

上一篇:下一篇: