<-
Apache > HTTP 服务器 > 文档 > 版本 2.4

Apache HTTP Server 2.4 版本新功能概述

可用语言:  en  |  fr  |  tr 

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

Support Apache!

另请参阅

top

核心增强

运行时可加载 MPM
现在可以在编译时将多个 MPM 构建为可加载模块。可以通过 LoadModule 指令在运行时配置首选的 MPM。
事件 MPM
事件 MPM 不再是实验性的,而是现在完全支持。
异步支持
更好地支持支持 MPM 和平台的异步读/写。
每个模块和每个目录的 LogLevel 配置
现在可以为每个模块和每个目录配置 LogLevel。在 debug 日志级别之上添加了新的级别 trace1trace8
每个请求的配置部分
<If><ElseIf><Else> 部分可用于根据每个请求的条件设置配置。
通用表达式解析器
新的表达式解析器允许使用通用语法在指令中指定 复杂条件,例如 SetEnvIfExprRewriteCondHeader<If> 等。
以毫秒为单位的 KeepAliveTimeout
现在可以以毫秒为单位指定 KeepAliveTimeout
NameVirtualHost 指令
不再需要,现在已弃用。
覆盖配置
新的 AllowOverrideList 指令允许更细粒度地控制哪些指令在 .htaccess 文件中允许。
配置文件变量
现在可以在配置中 Define 变量,如果在配置中的许多地方使用相同的值,则可以更清楚地表示。
减少内存使用
尽管有许多新功能,但 2.4.x 往往比 2.2.x 使用更少的内存。
top

新模块

mod_proxy_fcgi
mod_proxy 的 FastCGI 协议后端
mod_proxy_scgi
mod_proxy 的 SCGI 协议后端
mod_proxy_express
mod_proxy 提供动态配置的大规模反向代理
mod_remoteip
将请求的明显客户端远程 IP 地址和主机名替换为代理或负载均衡器通过请求标头提供的 IP 地址列表。
mod_heartmonitormod_lbmethod_heartbeat
允许 mod_proxy_balancer 基于后端服务器上的活动连接数来进行负载均衡决策。
mod_proxy_html
以前是一个第三方模块,它支持在反向代理情况下修复 HTML 链接,其中后端生成对代理的客户端无效的 URL。
mod_sed
mod_substitute 的高级替代方案,允许使用 sed 的全部功能编辑响应主体。
mod_auth_form
启用基于表单的身份验证。
mod_session
启用使用 cookie 或数据库存储的客户端会话状态。
mod_allowmethods
新模块,用于限制某些 HTTP 方法,而不会干扰身份验证或授权。
mod_lua
Lua 语言嵌入到 httpd 中,用于配置和小型业务逻辑函数。(实验性)
mod_log_debug
允许在请求处理的不同阶段添加可自定义的调试日志记录。
mod_buffer
提供用于缓冲输入和输出过滤器堆栈的功能
mod_data
将响应主体转换为 RFC2397 数据 URL
mod_ratelimit
为客户端提供带宽速率限制
mod_request
提供过滤器来处理和提供 HTTP 请求主体
mod_reflector
通过输出过滤器堆栈提供请求主体的反射作为响应。
mod_slotmem_shm
提供基于插槽的共享内存提供程序(类似于记分牌)。
mod_xml2enc
以前是一个第三方模块,它支持基于 libxml2 的(标记感知)过滤器模块中的国际化。
mod_macro(自 2.4.5 起可用)
在配置文件中提供宏。
mod_proxy_wstunnel(自 2.4.5 起可用)
支持 WebSocket 隧道。
mod_authnz_fcgi(自 2.4.10 起可用)
启用 FastCGI 授权程序应用程序来验证和/或授权客户端。
mod_http2(自 2.4.17 起可用)
支持 HTTP/2 传输层。
mod_proxy_http2(自 2.4.19 起可用)
mod_proxy 的 HTTP/2 协议后端
mod_proxy_hcheck(自 2.4.21 起可用)
支持对远程代理后端服务器进行独立的动态运行状况检查。
mod_brotli(自 2.4.26 起可用)
支持 Brotli 压缩算法。
mod_md(自 2.4.30 起可用)
支持 ACME 协议来自动执行证书配置。
mod_proxy_uwsgi(自 2.4.30 起可用)
mod_proxy 的 UWSGI 网关模块。
mod_socache_redis(自 2.4.39 起可用)
支持基于 Redis 的共享对象缓存提供程序。
mod_systemd(自 2.4.42 起可用)
systemd 集成。它允许 httpd 在使用 systemd Type=notify 的服务中使用。
top

模块增强

mod_ssl
mod_ssl 现在可以配置为使用 OCSP 服务器来检查客户端证书的验证状态。默认响应器是可配置的,以及是否优先考虑客户端证书本身指定的响应器。
mod_ssl 现在还支持 OCSP 钉扎,其中服务器主动获取其证书的 OCSP 验证并在握手期间将其传输给客户端。
mod_ssl 现在可以配置为通过 memcached 在服务器之间共享 SSL 会话数据
除了 RSA 和 DSA 之外,现在还支持 EC 密钥。
支持 TLS-SRP(在 2.4.4 及更高版本中可用)。
mod_proxy
ProxyPass 指令现在最优地配置在 LocationLocationMatch 块中,并且在大量存在时,与传统的双参数语法相比,它提供了显著的性能优势。
现在可以配置用于代理请求的源地址。
支持对后端的 Unix 域套接字(在 2.4.7 及更高版本中可用)。
mod_proxy_balancer
通过 balancer-manager 对 BalancerMembers 进行更多运行时配置更改
可以通过 balancer-manager 在运行时添加额外的 BalancerMembers
Balancer 参数子集的运行时配置
BalancerMembers 可以设置为 'Drain',以便它们只响应现有的粘性会话,从而允许它们优雅地脱机。
Balancer 设置可以在重启后保持持久性。
mod_cache
mod_cache CACHE 过滤器可以在过滤器链中的给定点可选地插入,以提供对缓存的精细控制。
mod_cache 现在可以缓存 HEAD 请求。
在可能的情况下,mod_cache 指令现在可以按目录设置,而不是按服务器设置。
可以自定义缓存 URL 的基本 URL,以便缓存集群可以共享相同的端点 URL 前缀。
mod_cache 现在能够在后端不可用(错误 5xx)时提供陈旧的缓存数据。
mod_cache 现在可以将 HIT/MISS/REVALIDATE 插入 X-Cache 标头。
mod_include
支持 'include' 元素中的 'onerror' 属性,允许在错误时提供错误文档,而不是默认的错误字符串。
mod_cgimod_includemod_isapi,...
标头到环境变量的转换比以前更严格,以减轻通过标头注入进行的一些可能的跨站点脚本攻击。包含无效字符(包括下划线)的标头名称不再转换为环境变量。Apache 中的环境变量 提供了一些关于如何解决需要此类标头的损坏的旧版客户端的指针。(这会影响所有使用这些环境变量的模块。)
mod_authz_core 授权逻辑容器
现在可以使用 Require 指令以及相关的容器指令(例如 <RequireAll>)来指定高级授权逻辑。
mod_rewrite
mod_rewriteRewriteRule 添加了 [QSD](查询字符串丢弃)和 [END] 标志,以简化常见的重写场景。
添加了在 RewriteCond 中使用复杂布尔表达式的可能性。
允许使用 SQL 查询作为 RewriteMap 函数。
mod_ldapmod_authnz_ldap
mod_authnz_ldap 添加了对嵌套组的支持。
mod_ldap 添加了 LDAPConnectionPoolTTLLDAPTimeout 以及其他对超时处理的改进。这对于那些有状态防火墙会丢弃到 LDAP 服务器的空闲连接的设置尤其有用。
mod_ldap 添加了 LDAPLibraryDebug 用于记录由所使用的 LDAP 工具包提供的调试信息。
mod_info
mod_info 现在可以在服务器启动期间将预解析的配置转储到标准输出。
mod_auth_basic
用于模拟基本身份验证的新通用机制(在 2.4.5 及更高版本中可用)。
top

程序增强

fcgistarter
新的 FastCGI 守护进程启动实用程序
htcacheclean
现在可以列出当前缓存的 URL,并可以选择包含元数据。
允许从缓存中显式删除单个缓存的 URL。
文件大小现在可以向上舍入到给定的块大小,使大小限制更接近磁盘上的实际大小。
缓存大小现在可以通过 inode 数量来限制,而不是或除了通过磁盘上文件的大小来限制。
rotatelogs
现在可以创建一个指向当前日志文件的链接。
现在可以调用自定义 post-rotate 脚本。
htpasswdhtdbm
支持 bcrypt 算法(在 2.4.4 及更高版本中可用)。
top

文档

mod_rewrite
mod_rewrite 文档已重新排列并几乎完全重写,重点关注示例和常见用法,以及向您展示何时其他解决方案更合适。 重写指南 现在是一个顶级部分,包含更多详细信息和更好的组织。
mod_ssl
mod_ssl 文档已大大增强,除了之前对技术细节的关注外,还提供了更多入门级别的示例。
缓存指南
缓存指南 已重写,以正确区分 mod_cache 提供的 RFC2616 HTTP/1.1 缓存功能,以及 socache 接口提供的通用键值缓存,以及涵盖由 mod_file_cache 等机制提供的专门缓存。
top

模块开发人员更改

添加了检查配置钩子
添加了一个新的钩子,check_config,它在 pre_configopen_logs 钩子之间运行。当将 -t 选项传递给 httpd 时,它也会在 test_config 钩子之前运行。check_config 钩子允许模块审查相互依赖的配置指令值并在仍然可以将消息记录到控制台时调整它们。因此,用户可以在核心 open_logs 钩子函数将控制台输出重定向到错误日志之前被告知配置错误问题。
添加了表达式解析器
我们现在有一个通用表达式解析器,其 API 在 ap_expr.h 中公开。这是从之前在 mod_ssl 中实现的表达式解析器改编而来的。
授权逻辑容器
授权模块现在通过 ap_register_auth_provider() 注册为提供程序,以支持高级授权逻辑,例如 <RequireAll>
小对象缓存接口
ap_socache.h 标头公开了基于 mod_ssl 会话缓存的先前实现的基于提供程序的小数据对象缓存接口。目前支持使用共享内存循环缓冲区、基于磁盘的 dbm 文件和 memcache 分布式缓存的提供程序。
添加了缓存状态钩子
mod_cache 模块现在包含一个新的 cache_status 钩子,它在缓存决策已知时被调用。提供了一个默认实现,它在响应中添加可选的 X-CacheX-Cache-Detail 标头。

开发人员文档包含一个 详细的 API 更改列表

可用语言:  en  |  fr  |  tr 

top

评论

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