apache / 2.4 / reference / new_features_2_2.html

Apache HTTP Server 2.2 中的新功能概述

本文档介绍了 Apache HTTP Server 2.0 和 2.2 版本之间的一些主要更改。有关 1.3 版以后的新功能,请参阅2 .0 个新功能文档。

Core Enhancements

  • Authn/Authz

    • Binding 的身份验证和授权模块已重构。新的 mod_authn_alias(已从 2.3/2.4 中删除)模块可以大大简化某些身份验证配置。有关这些更改如何影响用户和模块编写者的更多信息,请参见模块名称更改开发人员变更
  • Caching

  • Configuration

    • 默认配置布局已简化和模块化。现在可以将可用于启用常用功能的配置片段与 Apache Binding 在一起,并且可以轻松地将其添加到主服务器配置中。
  • Graceful stop

  • Proxying

  • 正则表达式库已更新

  • Smart Filtering

    • mod_filter将动态配置引入输出过滤器链。它使过滤器能够基于任何 Request 或 Response Headers 或环境变量被有条件地插入,并且免除了 2.0 体系结构中更棘手的依赖性和排序问题。
  • 大文件支持

    • httpd现在在现代 32 位 Unix 系统上支持大于 2GB 的文件。还增加了对处理大于 2GB 请求正文的支持。
  • Event MPM

    • event MPM 使用一个单独的线程来处理 Keep Alive 请求和接受连接。传统上,“保持活动”请求需要 httpd 专门负责处理此请求。在达到“保持活动”超时之前,无法再次使用此专用工作程序。
  • SQL 数据库支持

    • mod_dbdapr_dbd框架一起为需要它的模块提供了直接的 SQL 支持。支持线程 MPM 中的连接池。

Module Enhancements

  • Authn/Authz

    • 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 解析的配置指令,包括其文件名和行号。该模块还显示所有请求钩子的 Sequences 和其他构建信息,类似于httpd -V
  • mod_ssl

    • 添加了对RFC 2817的支持,该支持使连接从明文升级到 TLS 加密。
  • mod_imagemap

    • mod_imap已重命名为mod_imagemap,以避免用户混淆。

Program Enhancements

  • httpd

    • 添加了新的命令行选项-M,其中列出了基于当前配置加载的所有模块。与-l选项不同,此列表包括通过mod_so加载的 DSO。
  • httxt2dbm

    • 一个新程序,用于根据文本 Importing 生成 dbm 文件,以便在dbmMap 类型的RewriteMap中使用。

模块开发人员变更

  • APR 1.0 API

    • Apache 2.2 使用 APR 1.0 API。所有不推荐使用的功能和符号已从APRAPR-Util中删除。有关详细信息,请参见APR Website
  • 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_protocolap_filter_protocol调用将通用协议 Management 委托给mod_filter
  • 监视器钩子已添加

    • 监视器钩子使模块能够在父(根)进程中运行常规/计划的作业。
  • 正则表达式 API 的更改

    • pcreposix.hHeaders 不再可用;它被新的ap_regex.hHeaders 替换。旧 Headers 公开的 POSIX.2 regex.h实现现在在ap_regex.hap_命名空间下可用。调用regcompregexec等可以替换为调用ap_regcompap_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 数据库操作。应将现有应用程序升级为在可行的情况下以透明方式或建议用户使用的方式使用。