On this page
Apache HTTP Server 2.4 中的新功能概述
本文档描述了 Apache HTTP Server 2.2 和 2.4 版本之间的一些主要更改。有关自 2.0 版以来的新功能,请参阅2 .2 新功能文档。
Core Enhancements
运行时可加载的 MPM
- 现在可以在编译时将多个 MPM 设为内置为可加载模块。可以通过LoadModule指令在运行时配置所选的 MPM。
Event MPM
- Event MPM不再是实验性的,但现已得到完全支持。
Asynchronous support
- 更好地支持异步读/写,以支持 MPM 和平台。
每个模块和每个目录的 LogLevel 配置
- 现在可以按模块和目录配置LogLevel。在
debug
日志级别之上添加了新级别trace1
到trace8
。
- 现在可以按模块和目录配置LogLevel。在
每个请求的配置部分
通用表达式解析器
- 新的表达式解析器允许在SetEnvIfExpr,RewriteCond,Header,<If>等指令中使用通用语法指定complex conditions。
KeepAliveTimeout(以毫秒为单位)
- 现在可以指定KeepAliveTimeout(以毫秒为单位)。
NameVirtualHost directive
- 不再需要,现在已弃用。
Override Configuration
- 新的AllowOverrideList指令允许更精细地控制
.htaccess
文件中允许使用哪些指令。
- 新的AllowOverrideList指令允许更精细地控制
配置文件变量
- 现在可以在配置中使用Define个变量,如果在配置中的许多位置使用了相同的值,则可以更清楚地表示。
减少内存使用
- 尽管有许多新功能,但 2.4.x 往往比 2.2.x 使用更少的内存。
New Modules
-
- mod_proxy的 FastCGI 协议后端
-
- mod_proxy的 SCGI 协议后端
-
- 为mod_proxy提供动态配置的大量反向代理
-
- 使用代理或负载平衡器通过请求 Headers 提供的 IP 地址列表替换请求的明显的 Client 端远程 IP 地址和主机名。
mod_heartmonitor, mod_lbmethod_heartbeat
- 允许mod_proxy_balancer将负载均衡决策基于后端服务器上的活动连接数。
-
- 以前是第三方模块,它支持在反向代理情况下修复 HTML 链接,在这种情况下,后端生成的 URL 对代理的 Client 端无效。
-
- mod_substitute的高级替换允许使用 sed 的全部功能编辑响应正文。
-
- 启用基于表单的身份验证。
-
- 使用 cookie 或数据库存储为 Client 端启用会话状态使用。
-
- 新模块,用于限制某些 HTTP 方法而不会干扰身份验证或授权。
-
- 将Lua语言嵌入到 httpd 中,以进行配置和小型企业逻辑功能。 (实验性)
-
- 允许在请求处理的不同阶段添加可自定义的调试日志记录。
-
- 提供缓冲 Importing 和输出滤波器堆栈
-
- 将响应主体转换为 RFC2397 数据 URL
-
- 为 Client 端提供带宽速率限制
-
- 提供过滤器以处理和提供 HTTP 请求正文
-
- 通过输出过滤器堆栈将请求主体的反射作为响应提供。
-
- 提供基于插槽的共享内存提供程序(例如记分板)。
-
- 它以前是第三方模块,它支持基于 libxml2(可识别标记)的过滤器模块中的国际化。
mod_macro(自 2.4.5 起可用)
- 在配置文件中提供宏。
mod_proxy_wstunnel(自 2.4.5 起可用)
- 支持网络套接字隧道。
mod_authnz_fcgi(自 2.4.10 起可用)
- 启用 FastCGI 授权者应用程序以认证和/或授权 Client 端。
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_socache_redis(自 2.4.39 起可用)
- 支持基于Redis的共享对象缓存提供程序。
mod_systemd(自 2.4.42 起可用)
- 系统集成。它允许将 httpd 与 systemd
Type=notify
一起用于服务。
- 系统集成。它允许将 httpd 与 systemd
Module Enhancements
-
现在,在Location或LocationMatch块中最优化地配置了ProxyPass指令,与大量的传统两参数语法相比,它具有明显的性能优势。
现在可以配置用于代理请求的源地址。
支持到后端的 Unix 域套接字(在 2.4.7 和更高版本中可用)。
-
通过 balancer-manager 对 BalancerMembers 进行更多的运行时配置更改
可以在运行时通过 balancer-manager 添加其他 BalancerMembers
平衡器参数子集的运行时配置
可以将 BalancerMembers 设置为“ Drain”,以便它们仅对现有的粘性会话作出响应,从而使它们可以优雅地脱机。
重新启动后,平衡器设置可以保持不变。
-
- 支持'include'元素内的'onerror'属性,允许将错误文档提供给错误文档,而不是默认错误字符串。
mod_cgi, mod_include, mod_isapi, ...
- 将 Headers 转换为环境变量比以前更加严格,以通过 Headers 注入减轻某些可能的跨站点脚本攻击。包含无效字符(包括下划线)的标题名称将不再转换为环境变量。 Apache 中的环境变量针对如何处理需要此类 Headers 的残旧 Client 提供了一些指导。 (这会影响使用这些环境变量的所有模块.)
mod_authz_core授权逻辑容器
- 现在可以使用Require指令和相关的容器指令(例如<RequireAll>)来指定高级授权逻辑。
-
mod_rewrite为RewriteRule添加
[QSD]
(查询字符串丢弃)和[END]
标志,以简化常见的重写方案。增加了在RewriteCond中使用复杂的布尔表达式的可能性。
允许将 SQL 查询用作RewriteMap函数。
-
mod_authnz_ldap添加了对嵌套组的支持。
mod_ldap在超时处理方面增加了LDAPConnectionPoolTTL,LDAPTimeout和其他改进。这对于有状态防火墙断开与 LDAP 服务器的空闲连接的设置特别有用。
mod_ldap添加LDAPLibraryDebug来记录使用的 LDAP 工具包提供的调试信息。
-
- mod_info现在可以在服务器启动期间将预先解析的配置转储到 stdout。
-
- 伪造基本身份验证的新通用机制(在 2.4.5 和更高版本中可用)。
Program Enhancements
-
- 新的 FastCGI 守护程序启动器 Util
-
现在可以列出当前缓存的 URL,包括可选的元数据。
允许从缓存中显式删除单个缓存的 URL。
现在可以将文件大小四舍五入到给定的块大小,从而使大小限制更接近于磁盘上的实际大小。
缓存大小现在可以由索引节点的数量来限制,而不是由磁盘上文件的大小来限制或附加。
-
现在可以创建指向当前日志文件的链接。
现在可以调用自定义的旋转后脚本。
-
- 支持 bcrypt 算法(在 2.4.4 和更高版本中可用)。
Documentation
mod_rewrite
- mod_rewrite文档已重新排列并几乎完全被重写,着重于示例和常用用法,并向您展示了其他解决方案何时更合适。 Rewrite Guide现在是顶层部分,具有更多详细信息和更好的组织。
mod_ssl
- mod_ssl文档已得到极大增强,除了以前侧重于技术细节之外,还提供了更多入门级别的示例。
Caching Guide
- Caching Guide已被重写,以正确 locale 分mod_cache提供的 RFC2616 HTTP/1.1 缓存功能和socache接口提供的通用键/值缓存,并涵盖mod_file_cache之类的机制提供的专用缓存。
模块开发人员变更
检查配置钩子已添加
- 添加了一个新的钩子
check_config
,它在pre_config
和open_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-Cache
和X-Cache-Detail
Headers 添加到响应中。
- mod_cache模块现在包括一个新的
开发人员文档包含API 更改的详细列表。