Apache HTTP Server 2.4 新特性概述

2021-08-24 17:24 更新

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

核心增强

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

新模块

mod_proxy_fcgi
FastCGI 协议后端 mod_proxy
mod_proxy_scgi
SCGI 协议后端 mod_proxy
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
提供基于 Slot 的共享内存提供程序(ala the scoreboard)。
mod_xml2enc
以前是第三方模块,它支持基于 libxml2(标记感知)过滤器模块的国际化。
mod_macro (自 2.4.5 起可用)
在配置文件中提供宏。
mod_proxy_wstunnel (自 2.4.5 起可用)
支持网络套接字隧道。
mod_authnz_fcgi (自 2.4.10 起可用)
启用 FastCGI 授权方应用程序来验证和/或授权客户端。
mod_http2 (自 2.4.17 起可用)
支持 HTTP/2 传输层。
mod_proxy_http2 (自 2.4.19 起可用)
HTTP/2 协议后端用于 mod_proxy
mod_proxy_hcheck (自 2.4.21 起可用)
支持远程代理后端服务器的独立动态健康检查。
mod_brotli (自 2.4.26 起可用)
支持 Brotli 压缩算法。
mod_md (自 2.4.30 起可用)
支持 ACME 协议,实现证书自动配置。
mod_proxy_uwsgi (自 2.4.30 起可用)
.UWSGI 网关模块mod_proxy
mod_socache_redis (自 2.4.39 起可用)
支持基于Redis的共享对象缓存提供程序。
mod_systemd (自 2.4.42 起可用)
系统集成。它允许在带有 systemd 的服务中使用 httpd Type=notify

模块增强

mod_ssl
mod_ssl现在可以配置为使用 OCSP 服务器来检查客户端证书的验证状态。默认响应者是可配置的,以及是否首选客户端证书中指定的响应者的决定。
mod_ssl 现在还支持 OCSP 装订,其中服务器主动获取其证书的 OCSP 验证,并在握手期间将其传输到客户端。
mod_ssl 现在可以配置为通过 memcached 在服务器之间共享 SSL 会话数据
除了 RSA 和 DSA 之外,现在还支持 EC 密钥。
支持 TLS-SRP(在 2.4.4 及更高版本中可用)。
mod_proxy
ProxyPass指令现在在Locationor LocationMatch 块中进行了最佳配置 ,并且在大量出现时提供了比传统双参数语法显着的性能优势。
用于代理请求的源地址现在是可配置的。
支持到后端的 Unix 域套接字(在 2.4.7 及更高版本中可用)。
mod_proxy_balancer
通过 balancer-manager 对 BalancerMembers 进行更多运行时配置更改
可以在运行时通过 balancer-manager 添加额外的 BalancerMembers
Balancer 参数子集的运行时配置
BalancerMembers 可以设置为“Drain”,以便它们只响应现有的粘性会话,允许它们优雅地脱机。
重新启动后平衡器设置可以保持不变。
mod_cache
mod_cacheCACHE滤波器可以在所述过滤器链中的给定点可以任选插入,以提供对高速缓存精细控制。
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_rewrite添加[QSD] (Query String Discard) 和[END]标志 RewriteRule以简化常见的重写场景。
添加了在RewriteCond.
允许将 SQL 查询用作RewriteMap函数。
mod_ldapmod_authnz_ldap
mod_authnz_ldap 添加对嵌套组的支持。
mod_ldap在处理超时方面添加了 LDAPConnectionPoolTTL、 LDAPTimeout和其他改进。这对于有状态防火墙丢弃与 LDAP 服务器的空闲连接的设置特别有用。
mod_ldapLDAPLibraryDebug使用的 LDAP 工具包提供的调试信息添加 到日志中。
mod_info
mod_info 现在可以在服务器启动期间将预解析的配置转储到标准输出。
mod_auth_basic
用于伪造基本身份验证的新通用机制(在 2.4.5 及更高版本中可用)。

程序增强

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

文档

mod_rewrite
mod_rewrite文档已重新排列并几乎完全重写,重点是示例和常见用法,以及向您展示其他解决方案何时更合适。该重写指南现在有更多的细节和更好的组织的顶层部分。
mod_ssl
mod_ssl文档已大大增强,与更多的例子在入门级别,除了过去注重技术细节。
缓存指南
该缓存指南已经被改写为RFC2616 HTTP / 1.1缓存由提供的特征正确区分mod_cache,并通过所提供的类属键/值缓存socache 接口,以及到专门盖通过了高速缓存,等机制提供mod_file_cache

模块开发人员更改

添加检查配置挂钩
添加了一个新的钩子 ,check_config它在pre_configopen_logs 钩子之间运行。它test_config-t选项传递到 时,它也会在钩子之前运行httpd。该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标头。


以上内容是否对您有帮助:
在线笔记
App下载
App下载

扫描二维码

下载编程狮App

公众号
微信公众号

编程狮公众号