Apache HTTP Server 2.4 版本
本文档描述了 Apache HTTP Server 2.0 和 2.2 版本之间的一些主要变化。有关 1.3 版本以来的新功能,请参阅 2.0 新功能 文档。
mod_cache
、mod_cache_disk
和 mod_mem_cache(已从 2.3/2.4 中删除)已经过大量更改,现在被认为是生产级质量。已引入 htcacheclean
来清理 mod_cache_disk
设置。prefork
、worker
和 event
MPM 现在允许 httpd
通过 graceful-stop
信号优雅地关闭。已添加 GracefulShutdownTimeout
指令来指定可选的超时时间,在此之后,httpd
将终止,无论正在服务的任何请求的状态如何。mod_proxy_balancer
模块为 mod_proxy
提供负载均衡服务。新的 mod_proxy_ajp
模块添加了对 Apache Tomcat 使用的 Apache JServ Protocol version 1.3
的支持。--with-pcre
标志传递给 configure 来配置 httpd
以使用 PCRE 的系统安装。mod_filter
为输出过滤器链引入了动态配置。它使过滤器能够根据任何请求或响应标头或环境变量有条件地插入,并消除了 2.0 架构中更麻烦的依赖关系和排序问题。httpd
在现代 32 位 Unix 系统上构建了对大于 2GB 的文件支持。还添加了对处理 >2GB 请求正文的支持。event
MPM 使用单独的线程来处理 Keep Alive 请求和接受连接。传统上,Keep Alive 请求需要 httpd 专用一个工作进程来处理它。这个专用的工作进程在 Keep Alive 超时时间到达之前无法再次使用。mod_dbd
与 apr_dbd
框架一起,为需要它的模块带来了直接的 SQL 支持。支持在多线程 MPM 中连接池。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 中删除)模块,用于简化某些身份验证配置。mod_authnz_ldap
mod_auth_ldap
模块移植到 2.2 Authn/Authz
框架。新功能包括在 Require
指令中使用 LDAP 属性值和复杂的搜索过滤器。mod_authz_owner
mod_version
mod_info
?config
参数,它将显示 Apache 解析的配置指令,包括它们的文件名和行号。该模块还显示所有请求钩子的顺序和附加构建信息,类似于 httpd -V
。mod_ssl
mod_imagemap
mod_imap
已重命名为 mod_imagemap
以避免用户混淆。httpd
-M
,它列出根据当前配置加载的所有模块。与 -l
选项不同,此列表包括通过 mod_so
加载的 DSO。httxt2dbm
RewriteMap
与 dbm
地图类型一起使用。APR
和 APR-Util
中删除。有关详细信息,请参阅 APR 网站。mod_auth_*
-> 实现 HTTP 身份验证机制的模块mod_authn_*
-> 提供后端身份验证提供程序的模块mod_authz_*
-> 实现授权(或访问)的模块mod_authnz_*
-> 实现身份验证和授权的模块ap_log_cerror
来记录与客户端连接发生的错误。记录时,消息将包含客户端 IP 地址。test_config
来帮助希望仅在用户将 -t
传递给 httpd
时执行特殊代码的模块。ThreadStackSize
来设置所有多线程 MPM 上的堆栈大小。这对于某些在默认线程堆栈大小很小的平台上的第三方模块是必需的。ap_register_output_filter_protocol
或 ap_filter_protocol
调用将常见的协议管理委托给 mod_filter
。pcreposix.h
标头不再可用;它被新的 ap_regex.h
标头替换。旧标头公开的 POSIX.2 regex.h
实现现在可以在 ap_regex.h
的 ap_
命名空间下使用。对 regcomp
、regexec
等的调用可以替换为对 ap_regcomp
、ap_regexec
的调用。在 Apache 1.x 和 2.0 中,需要 SQL 后端的模块必须自行负责管理它。除了重复造轮子之外,这效率非常低,例如当多个模块各自维护自己的连接时。
Apache 2.1 及更高版本提供了 ap_dbd
API 用于管理数据库连接(包括针对多线程和非多线程 MPM 的优化策略),而 APR 1.2 及更高版本提供了 apr_dbd
API 用于与数据库交互。
新的模块现在应该使用这些 API 进行所有 SQL 数据库操作。现有应用程序应该尽可能升级以使用它,无论是透明地还是作为对其用户的推荐选项。