• 首页
  • vue
  • TypeScript
  • JavaScript
  • scss
  • css3
  • html5
  • php
  • MySQL
  • redis
  • jQuery
  • Apache2.4 新特性

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

    核心增强

    运行时可加载的MPM
    现在可以在编译时将多个MPM 构建为可加载模块。可以在运行时通过LoadModule指令配置所选的MPM 。
    活动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
    提供基于插槽的共享内存提供程序(例如记分板)。
    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_socache_redis(自2.4.39起可用)
    支持基于Redis的共享对象缓存提供程序。
    mod_systemd(自2.4.42起可用)
    系统集成。它允许httpd与systemd一起用于服务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现在,该指令已在LocationLocationMatch块内进行了最佳配置,并且在数量众多时,与传统的两参数语法相比,具有明显的性能优势。
    现在可以配置用于代理请求的源地址。
    支持到后端的Unix域套接字(在2.4.7和更高版本中可用)。
    mod_proxy_balancer
    通过balancer-manager对BalancerMembers进行更多的运行时配置更改
    可以在运行时通过balancer-manager添加其他BalancerMembers
    平衡器参数子集的运行时配置
    可以将BalancerMembers设置为“ Drain”,以便它们仅对现有的粘性会话做出响应,从而使它们可以优雅地脱机。
    重新启动后,平衡器设置可以保持不变。
    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_rewrite添加[QSD](查询字符串丢弃)和[END]标志RewriteRule以简化常见的重写方案。
    增加了在中使用复杂布尔表达式的可能性RewriteCond
    允许将SQL查询用作RewriteMap函数。
    mod_ldapmod_authnz_ldap
    mod_authnz_ldap增加了对嵌套组的支持。
    mod_ldap在超时处理方面增加了LDAPConnectionPoolTTLLDAPTimeout和其他改进。这对于有状态防火墙断开与LDAP服务器的空闲连接的设置特别有用。
    mod_ldapLDAPLibraryDebug使用的LDAP工具包提供的调试信息添加到日志中。
    mod_info
    mod_info现在可以在服务器启动期间将预先解析的配置转储到stdout。
    mod_auth_basic
    伪造基本身份验证的新通用机制(在2.4.5和更高版本中可用)。

    程序增强

    fcgistarter
    新的FastCGI守护程序启动器实用程序
    htcacheclean
    现在可以列出当前缓存的URL,包括可选的元数据。
    允许从缓存中明确删除单个缓存的URL。
    现在可以将文件大小四舍五入到给定的块大小,从而使大小限制更接近于磁盘上的实际大小。
    缓存大小现在可以由索引节点的数量来限制,而不是由磁盘上文件的大小来限制或附加。
    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-CacheX-Cache-Detail标头添加到响应中。

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

    评论

    注意:
    这不是“问答”部分。此处放置的评论应指向有关改进文档或服务器的建议,如果实施或被认为无效/偏离主题,我们的主持人可以将其删除。有关如何管理Apache HTTP Server的问题,应直接指向我们的IRC频道#httpd(位于Freenode上)或发送至我们的邮件列表。

    下篇:编译安装