<-
Apache > HTTP Server > 文档 > 2.4 版本

Apache HTTP Server 2.2 版本新功能概述

可用语言:  en  |  fr  |  ko  |  pt-br  |  tr 

本文档描述了 Apache HTTP Server 2.0 和 2.2 版本之间的一些主要变化。有关 1.3 版本以来的新功能,请参阅 2.0 新功能 文档。

Support Apache!

另请参阅

top

核心增强

身份验证/授权
捆绑的身份验证和授权模块已重构。新的 mod_authn_alias(已从 2.3/2.4 中删除)模块可以极大地简化某些身份验证配置。有关这些更改如何影响用户和模块编写者的更多信息,请参阅 模块名称更改开发者更改
缓存
mod_cachemod_cache_disk 和 mod_mem_cache(已从 2.3/2.4 中删除)已经过大量更改,现在被认为是生产级质量。已引入 htcacheclean 来清理 mod_cache_disk 设置。
配置
默认配置布局已简化和模块化。现在,可以用来启用常用功能的配置片段与 Apache 捆绑在一起,可以轻松地添加到主服务器配置中。
优雅停止
preforkworkerevent MPM 现在允许 httpd 通过 graceful-stop 信号优雅地关闭。已添加 GracefulShutdownTimeout 指令来指定可选的超时时间,在此之后,httpd 将终止,无论正在服务的任何请求的状态如何。
代理
新的 mod_proxy_balancer 模块为 mod_proxy 提供负载均衡服务。新的 mod_proxy_ajp 模块添加了对 Apache Tomcat 使用的 Apache JServ Protocol version 1.3 的支持。
正则表达式库更新
现在包含了 Perl Compatible Regular Expression Library (PCRE) 的 5.0 版本。可以通过将 --with-pcre 标志传递给 configure 来配置 httpd 以使用 PCRE 的系统安装。
智能过滤
mod_filter 为输出过滤器链引入了动态配置。它使过滤器能够根据任何请求或响应标头或环境变量有条件地插入,并消除了 2.0 架构中更麻烦的依赖关系和排序问题。
大文件支持
现在,httpd 在现代 32 位 Unix 系统上构建了对大于 2GB 的文件支持。还添加了对处理 >2GB 请求正文的支持。
事件 MPM
event MPM 使用单独的线程来处理 Keep Alive 请求和接受连接。传统上,Keep Alive 请求需要 httpd 专用一个工作进程来处理它。这个专用的工作进程在 Keep Alive 超时时间到达之前无法再次使用。
SQL 数据库支持
mod_dbdapr_dbd 框架一起,为需要它的模块带来了直接的 SQL 支持。支持在多线程 MPM 中连接池。
top

模块增强

身份验证/授权
aaa 目录中的模块已重命名,并提供对摘要身份验证的更好支持。例如,mod_auth 现在拆分为 mod_auth_basicmod_authn_filemod_auth_dbm 现在称为 mod_authn_dbmmod_access 已重命名为 mod_authz_host。还有一个新的 mod_authn_alias(已从 2.3/2.4 中删除)模块,用于简化某些身份验证配置。
mod_authnz_ldap
此模块是将 2.0 mod_auth_ldap 模块移植到 2.2 Authn/Authz 框架。新功能包括在 Require 指令中使用 LDAP 属性值和复杂的搜索过滤器。
mod_authz_owner
一个新的模块,它根据文件系统上文件的拥有者授权访问文件
mod_version
一个新的模块,它允许根据正在运行的服务器的版本号启用配置块。
mod_info
添加了一个新的 ?config 参数,它将显示 Apache 解析的配置指令,包括它们的文件名和行号。该模块还显示所有请求钩子的顺序和附加构建信息,类似于 httpd -V
mod_ssl
添加了对 RFC 2817 的支持,它允许连接从明文升级到 TLS 加密。
mod_imagemap
mod_imap 已重命名为 mod_imagemap 以避免用户混淆。
top

程序增强

httpd
添加了一个新的命令行选项 -M,它列出根据当前配置加载的所有模块。与 -l 选项不同,此列表包括通过 mod_so 加载的 DSO。
httxt2dbm
一个新的程序,用于从文本输入生成 dbm 文件,供 RewriteMapdbm 地图类型一起使用。
top

模块开发者变更

APR 1.0 API
Apache 2.2 使用 APR 1.0 API。所有已弃用的函数和符号已从 APRAPR-Util 中删除。有关详细信息,请参阅 APR 网站
身份验证/授权
捆绑的身份验证和授权模块已按照以下方式重命名
  • mod_auth_* -> 实现 HTTP 身份验证机制的模块
  • mod_authn_* -> 提供后端身份验证提供程序的模块
  • mod_authz_* -> 实现授权(或访问)的模块
  • mod_authnz_* -> 实现身份验证和授权的模块
有一个新的身份验证后端提供程序方案,它极大地简化了新身份验证后端的构建。
连接错误日志记录
已添加一个新函数 ap_log_cerror 来记录与客户端连接发生的错误。记录时,消息将包含客户端 IP 地址。
添加测试配置钩子
已添加一个新的钩子 test_config 来帮助希望仅在用户将 -t 传递给 httpd 时执行特殊代码的模块。
设置多线程 MPM 的堆栈大小
已添加一个新的指令 ThreadStackSize 来设置所有多线程 MPM 上的堆栈大小。这对于某些在默认线程堆栈大小很小的平台上的第三方模块是必需的。
输出过滤器的协议处理
过去,每个过滤器都负责确保它生成正确的响应标头,因为它会影响它们。过滤器现在可以使用 ap_register_output_filter_protocolap_filter_protocol 调用将常见的协议管理委托给 mod_filter
添加监视钩子
监视钩子使模块能够在父(根)进程中运行定期/计划作业。
正则表达式 API 更改
pcreposix.h 标头不再可用;它被新的 ap_regex.h 标头替换。旧标头公开的 POSIX.2 regex.h 实现现在可以在 ap_regex.hap_ 命名空间下使用。对 regcompregexec 等的调用可以替换为对 ap_regcompap_regexec 的调用。
DBD 框架(SQL 数据库 API)

在 Apache 1.x 和 2.0 中,需要 SQL 后端的模块必须自行负责管理它。除了重复造轮子之外,这效率非常低,例如当多个模块各自维护自己的连接时。

Apache 2.1 及更高版本提供了 ap_dbd API 用于管理数据库连接(包括针对多线程和非多线程 MPM 的优化策略),而 APR 1.2 及更高版本提供了 apr_dbd API 用于与数据库交互。

新的模块现在应该使用这些 API 进行所有 SQL 数据库操作。现有应用程序应该尽可能升级以使用它,无论是透明地还是作为对其用户的推荐选项。

可用语言:  en  |  fr  |  ko  |  pt-br  |  tr 

top

评论

注意
这不是问答部分。此处发布的评论应针对改进文档或服务器的建议,如果它们已实施或被认为无效/不相关,我们的版主可能会将其删除。有关如何管理 Apache HTTP Server 的问题应直接发送到我们的 IRC 频道 #httpd(在 Libera.chat 上),或发送到我们的 邮件列表