On this page
Apache HTTP Server 2.2 中的新功能概述
本文档介绍了 Apache HTTP Server 2.0 和 2.2 版本之间的一些主要更改。有关 1.3 版以后的新功能,请参阅2 .0 个新功能文档。
Core Enhancements
Authn/Authz
Caching
- mod_cache,mod_cache_disk和 mod_mem_cache(已从 2.3/2.4 中删除)进行了很多更改,现在被认为是生产质量。已引入htcacheclean来清理mod_cache_disk设置。
Configuration
- 默认配置布局已简化和模块化。现在可以将可用于启用常用功能的配置片段与 Apache Binding 在一起,并且可以轻松地将其添加到主服务器配置中。
Graceful stop
- prefork,worker和event MPM 现在允许通过graceful-stopsignal 正常关闭httpd。添加了GracefulShutdownTimeout指令以指定可选的超时时间,此后httpd将终止,无论正在处理的任何请求的状态如何。
Proxying
- 新的mod_proxy_balancer模块为mod_proxy提供负载平衡服务。新的mod_proxy_ajp模块增加了对Apache Tomcat使用的
Apache JServ Protocol version 1.3
的支持。
- 新的mod_proxy_balancer模块为mod_proxy提供负载平衡服务。新的mod_proxy_ajp模块增加了对Apache Tomcat使用的
正则表达式库已更新
- 现已包含Perl 兼容的正则表达式库(PCRE)的 5.0 版。可以通过传递
--with-pcre
标志来配置httpd以使用 PCRE 的系统安装。
- 现已包含Perl 兼容的正则表达式库(PCRE)的 5.0 版。可以通过传递
Smart Filtering
- mod_filter将动态配置引入输出过滤器链。它使过滤器能够基于任何 Request 或 Response Headers 或环境变量被有条件地插入,并且免除了 2.0 体系结构中更棘手的依赖性和排序问题。
大文件支持
- httpd现在在现代 32 位 Unix 系统上支持大于 2GB 的文件。还增加了对处理大于 2GB 请求正文的支持。
Event MPM
- event MPM 使用一个单独的线程来处理 Keep Alive 请求和接受连接。传统上,“保持活动”请求需要 httpd 专门负责处理此请求。在达到“保持活动”超时之前,无法再次使用此专用工作程序。
SQL 数据库支持
- mod_dbd和
apr_dbd
框架一起为需要它的模块提供了直接的 SQL 支持。支持线程 MPM 中的连接池。
- mod_dbd和
Module Enhancements
Authn/Authz
- aaa 目录中的模块已重命名,并为摘要身份验证提供了更好的支持。例如,
mod_auth
现在分为mod_auth_basic和mod_authn_file;mod_auth_dbm
现在称为mod_authn_dbm;mod_access
已重命名为mod_authz_host。还有一个新的 mod_authn_alias(已从 2.3/2.4 中删除)模块,用于简化某些身份验证配置。
- aaa 目录中的模块已重命名,并为摘要身份验证提供了更好的支持。例如,
-
- 此模块是 2.0
mod_auth_ldap
模块到 2.2Authn/Authz
框架的端口。新功能包括在Require指令中使用 LDAP 属性值和复杂的搜索过滤器。
- 此模块是 2.0
-
- 一个新模块,该模块根据文件系统上文件的所有者授权对文件的访问
-
- 一个新模块,允许基于正在运行的服务器的版本号启用配置块。
-
- 添加了一个新的
?config
参数,该参数将显示 Apache 解析的配置指令,包括其文件名和行号。该模块还显示所有请求钩子的 Sequences 和其他构建信息,类似于httpd -V
。
- 添加了一个新的
-
- 添加了对RFC 2817的支持,该支持使连接从明文升级到 TLS 加密。
-
mod_imap
已重命名为mod_imagemap,以避免用户混淆。
Program Enhancements
-
- 添加了新的命令行选项
-M
,其中列出了基于当前配置加载的所有模块。与-l
选项不同,此列表包括通过mod_so加载的 DSO。
- 添加了新的命令行选项
-
- 一个新程序,用于根据文本 Importing 生成 dbm 文件,以便在
dbm
Map 类型的RewriteMap中使用。
- 一个新程序,用于根据文本 Importing 生成 dbm 文件,以便在
模块开发人员变更
APR 1.0 API
- Apache 2.2 使用 APR 1.0 API。所有不推荐使用的功能和符号已从
APR
和APR-Util
中删除。有关详细信息,请参见APR Website。
- Apache 2.2 使用 APR 1.0 API。所有不推荐使用的功能和符号已从
Authn/Authz
- Binding 的身份验证和授权模块已按照以下几行进行了重命名:
mod_auth_*
->实现 HTTP 身份验证机制的模块mod_authn_*
->提供后端身份验证提供程序的模块mod_authz_*
->实现授权(或访问)的模块mod_authnz_*
->同时实现身份验证和授权的模块
有一个新的身份验证后端提供程序方案,可以大大简化新身份验证后端的构建。
连接错误记录
- 已添加新功能
ap_log_cerror
来记录 Client 端连接发生的错误。记录后,该消息包括 Client 端 IP 地址。
- 已添加新功能
测试配置钩子已添加
- 新的钩子
test_config
已添加到辅助模块,这些辅助模块仅在用户将-t
传递给httpd时才想执行特殊代码。
- 新的钩子
设置线程 MPM 的堆栈大小
- 添加了新的指令ThreadStackSize来设置所有线程 MPM 的堆栈大小。对于默认线程堆栈较小的平台上的某些第三方模块,这是必需的。
输出过滤器的协议处理
- 过去,每个过滤器都有责任确保在影响它们的地方生成正确的响应头。过滤器现在可以使用
ap_register_output_filter_protocol
或ap_filter_protocol
调用将通用协议 Management 委托给mod_filter。
- 过去,每个过滤器都有责任确保在影响它们的地方生成正确的响应头。过滤器现在可以使用
监视器钩子已添加
- 监视器钩子使模块能够在父(根)进程中运行常规/计划的作业。
正则表达式 API 的更改
pcreposix.h
Headers 不再可用;它被新的ap_regex.h
Headers 替换。旧 Headers 公开的 POSIX.2regex.h
实现现在在ap_regex.h
的ap_
命名空间下可用。调用regcomp
,regexec
等可以替换为调用ap_regcomp
,ap_regexec
。
DBD 框架(SQL 数据库 API)
- 使用 Apache 1.x 和 2.0,需要 SQL 后端的模块必须自行 Management。除了重新设计轮子之外,这可能非常无效,例如,当几个模块各自维护自己的连接时。
Apache 2.1 和更高版本提供了ap_dbd
API,用于 Management 数据库连接(包括针对线程和非线程 MPM 的优化策略),而 APR 1.2 和更高版本提供了apr_dbd
API,用于与数据库进行交互。
现在,新模块应该将这些 API 用于所有 SQL 数据库操作。应将现有应用程序升级为在可行的情况下以透明方式或建议用户使用的方式使用。