Apache HTTP Server 2.2 新特性概述
2021-08-24 17:21 更新
本文档描述了 Apache HTTP Server 2.0 和 2.2 版本之间的一些主要变化。有关 1.3 版以来的新功能,请参阅2.0 新功能 文档。
核心增强
- 验证/验证
- 捆绑的身份验证和授权模块已重构。新的 mod_authn_alias(已从 2.3/2.4 移除)模块可以大大简化某些身份验证配置。有关这些更改如何影响用户和模块编写者的更多信息,请参阅模块名称更改和 开发人员更改。
- 缓存
mod_cache
,mod_cache_disk
, 和 mod_mem_cache(已经从 2.3/2.4 中删除)已经发生了很多变化,现在被认为是生产质量的。htcacheclean
已被引入清理mod_cache_disk
设置。- 配置
- 默认配置布局已被简化和模块化。可用于启用常用功能的配置片段现在与 Apache 捆绑在一起,并且可以轻松添加到主服务器配置中。
- 优雅的停止
- 的
prefork
,worker
并且event
最可能模式现在允许httpd
通过将安全关机graceful-stop
信号。GracefulShutdownTimeout
添加了该指令以指定可选的超时,之后httpd
无论正在服务的任何请求的状态如何, 都将终止。 - 代理
- 新
mod_proxy_balancer
模块为mod_proxy
. 新mod_proxy_ajp
模块添加了对Apache TomcatApache JServ Protocol version 1.3
使用的 支持 。 - 更新了正则表达式库
- 现在包括Perl 兼容正则表达式库(PCRE) 的5.0 版 。
httpd
可以通过传递--with-pcre
标志来配置使用 PCRE 的系统安装 。 - 智能过滤
mod_filter
向输出过滤器链引入动态配置。它允许根据任何请求或响应标头或环境变量有条件地插入过滤器,并免除 2.0 架构中存在更多问题的依赖项和排序问题。- 大文件支持
httpd
现在在现代 32 位 Unix 系统上支持大于 2GB 的文件。还添加了对处理 >2GB 请求正文的支持。- 事件 MPM
- 该
event
MPM使用单独的线程来处理保持活动的请求和接受连接。Keep Alive 请求传统上需要 httpd 指定一个工作人员来处理它。在达到 Keep Alive 超时之前,无法再次使用此专用工作器。 - SQL 数据库支持
mod_dbd
与apr_dbd
框架一起为需要它的模块带来直接的 SQL 支持。支持线程 MPM 中的连接池。
模块增强
- 验证/验证
- 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 中删除)模块,用于简化某些身份验证配置。 mod_authnz_ldap
- 该模块是 2.0
mod_auth_ldap
模块到 2.2Authn/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
以避免用户混淆。
程序增强
httpd
- 添加了一个新的命令行选项
-M
,用于列出基于当前配置加载的所有模块。与-l
选项不同,此列表包括通过mod_so
. httxt2dbm
- 一项新的计划用于生成DBM从文本输入文件,用于
RewriteMap
与dbm
地图类型。
模块开发人员更改
- APR 1.0 API
- Apache 2.2 使用 APR 1.0 API。所有不推荐使用的函数和符号都已从
APR
和 中 删除APR-Util
。有关详细信息,请参阅 APR 网站。 - 验证/验证
- 捆绑的身份验证和授权模块已按以下方式重命名:
mod_auth_*
-> 实现 HTTP 身份验证机制的模块mod_authn_*
-> 提供后端身份验证提供程序的模块mod_authz_*
-> 实现授权(或访问)的模块mod_authnz_*
-> 实现身份验证和授权的模块
- 连接错误记录
- 添加了一个新功能
ap_log_cerror
来记录客户端连接发生的错误。记录时,该消息包括客户端 IP 地址。 - 添加了测试配置挂钩
- 添加了一个新的钩子,
test_config
以帮助模块只在用户传递-t
到httpd
. - 设置线程 MPM 的堆栈大小
- 添加了一个新指令
ThreadStackSize
来设置所有线程 MPM 上的堆栈大小。对于具有较小默认线程堆栈大小的平台上的某些第三方模块,这是必需的。 - 输出过滤器的协议处理
- 过去,每个过滤器都负责确保它在影响它们的地方生成正确的响应标头。过滤器现在可以
mod_filter
使用ap_register_output_filter_protocol
或ap_filter_protocol
调用将公共协议管理委托 给 。 - 添加了监视器钩子
- 监视器挂钩使模块能够在父(根)进程中运行常规/计划作业。
- 正则表达式 API 变化
- 的
pcreposix.h
报头不再可用; 它被新的ap_regex.h
标题取代。该POSIX.2regex.h
由旧的头露出实施是现在下提供ap_
从命名空间ap_regex.h
。调用regcomp
,regexec
等可以替换为调用ap_regcomp
,ap_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 数据库操作。现有的应用程序应该升级以在可行的情况下使用它,无论是透明的还是作为向用户推荐的选项。
以上内容是否对您有帮助:
更多建议: