# Apache 2.2 新特性概述
这篇文档简述了Apache HTTP Server 2.0和2.2 版本之间的主要差异。对于1.3版本以后的新特性,请参考[Apache 2.0 新特性](#calibre_link-234)文档。
## 核心增强
认证/授权(Authn/Authz)
原本捆绑在一起的认证(authentication)与授权(authorization)模块现在被分开了。新的`mod_authn_alias`模块可以极大的简化某些身份认证的配置。请参见[模块名的变更](#calibre_link-304)和[针对模块开发者的变更](#calibre_link-305)以了解更多有关这些变更对于模块使用者和模块开发者的影响。
缓冲
`mod_cache`、`mod_disk_cache`、`mod_mem_cache`经历了诸多修改以后现在已经具备了合格的产品质量了。新增加的`htcacheclean`工具可以用来清理`mod_disk_cache`模块使用的缓冲存储区。
配置
默认的配置布局已经被简化并模块化了。启用常用特性的配置片段现在已经和Apache捆绑在一起,可以被轻易的添加到主配置文件中。
优雅停止(Graceful stop)
`prefork`、`worker`、`event`多路处理模块(MPM)现在允许`httpd`通过[`graceful-stop`](#calibre_link-309)信号被优雅的停止。可以用新增的`GracefulShutdownTimeout`指令指定一个超时时间,超过指定的时间以后`httpd`将会强行中止,而无论请求所处的服务状态如何。
代理
新增的`mod_proxy_balancer`模块为`mod_proxy`提供了负载均衡服务。新增的`mod_proxy_ajp`模块为[Apache Tomcat](http://jakarta.apache.org/tomcat/)使用的`Apache JServ Protocol version 1.3`提供了支持。
正则表达式库更新
5.0版的[Perl兼容正则表达式库](http://www.pcre.org/)(PCRE)已经被包含进来了。`httpd`现在可以通过 `--with-pcre` 编译选项使用系统中已经安装好的PCRE。
智能过滤器
`mod_filter`可以进行输出过滤器链的动态配置。它允许过滤器按照请求头或应答头或环境变量有条件的插入,这样就避免了许多在Apache2.0体系结构中存在的过滤器之间的依赖性和顺序问题。
大文件支持
httpd现在已经被构建为在现代的32位Unix系统上支持大于2GB的文件。而且也可以处理大于2G的请求体(request body)。
Event MPM
`event`多路处理模块(MPM)使用一个单独隔开的线程处理持久连接(Keep Alive)。传统上,持久连接要求httpd专门拿出一个工作者(worker)(也就是一个进程/线程)来处理它。这个专用的工作者在持久连接超时前不能被重新使用。
SQL数据库支持
`mod_dbd`和apr_dbd框架(framework)一起为需要使用数据库的模块提供直接的支持。在线程化的MPM中还能支持连接缓冲池。
**Windows用户**请注意,这个特性尚未包含在标准的windows版Apache中。如果你尝试在Windows平台上使用这个特性,请告诉我们你的进展情况。
## 模块增强
认证/授权(Authn/Authz)
aaa目录下的模块已经被重新命名并提供了对摘要认证(digest authentication)的更好支持。例如,mod_auth现在已经被分割成`mod_auth_basic`和`mod_authn_file`两个模块;mod_auth_dbm现在更名为`mod_authn_dbm`;mod_access现在更名为`mod_authz_host`;还新增了一个`mod_authn_alias`模块用于简化某些认证配置。
`mod_authnz_ldap`
这个模块是2.0版`mod_auth_ldap`模块到2.2版的`Authn/Authz`框架的一个移植。新的特性包括使用LDAP属性值和`Require`指令中复杂的搜索过滤器。
`mod_info`
添加了一个新的 `?config` 参数,可以用来显示被Apache分析过的配置指令,包括它们的文件名和行号。该模块还显示所有请求钩子(request hook)的顺序和额外的编译信息,有些类似于 `httpd -V`
。
`mod_ssl`
添加了[RFC 2817](http://www.ietf.org/rfc/rfc2817.txt)支持,它允许连接从明文提升到TLS加密。
`mod_imagemap`
mod_imap已经被重命名为`mod_imagemap`,以避免用户产生混淆和疑惑。
## 程序增强
`httpd`
添加了一个新的命令行选项 `-M` 用来列出基于当前配置加载的所有模块。不同于 `-l` 选项的是,它还列出了通过`mod_so`加载的DSO(动态共享对象)。
`httxt2dbm`
一个用于从文本输入产生dbm文件的程序,目的是为了能够在`RewriteMap`中使用`dbm`映射表(map)类型。
## 针对模块开发者的变化
[APR](#calibre_link-318 "see glossary") 1.0 API
Apache2.2 使用 APR 1.0 API 。所有反对使用的函数和符号已经从 `APR` 和 `APR-Util` 中清除掉了。欲知详情,请查看[APR 网站](http://apr.apache.org/)。
认证/授权(Authn/Authz)
原来捆绑在一起的认证和授权模块已经被按照下列规则进行了重命名:
* mod_auth_* -> 实现HTTP认证机制的模块
* mod_authn_* -> 实现后端认证支持者的模块
* mod_authz_* -> 实现授权(或访问)的模块
* mod_authnz_* -> 同时实现认证和授权的模块
现在有一个新的认证后端提供者方案,可以简化新认证后端的创建。
连接错误日志
添加了一个新的`ap_log_cerror`函数用于记录客户端连接时发生的错误。并且在记录时包含客户端IP地址。
添加了一个测试配置的钩子(hook)
添加了一个新的`test_config` 钩子,可以在用户向`httpd`传递 `-t` 选项时,执行包含特定代码的模块。
设置线程型MPM所使用的栈空间大小
新增的`ThreadStackSize`指令可以用来限制所有线程型MPM所使用的栈大小。一些默认栈空间较小的平台上的第三方模块需要使用它指定栈空间的大小。
输出过滤器协议处理
过去,每个过滤器都要确保自身能够产生正确的应答头。现在过滤器可以调用`ap_register_output_filter_protocol`或`ap_filter_protocol`来委托`mod_filter`进行协议管理。
添加了监视钩子(Monitor hook)
监视钩子可以让模块运行父进程中事先安排好的工作。
正则表达式 API 发生了变化
`pcreposix.h`头文件现在被`ap_regex.h`头文件取代了。原来老的POSIX.2 `regex.h` 实现现在位于`ap_`名字空间下(由`ap_regex.h`提供)。比如原来的`regcomp`, `regexec`调用现在要修改成`ap_regcomp`, `ap_regcomp`调用。
DBD框架(SQL数据库API)
在1.x和2.0版本中,需要SQL支持的模块必须自己管理数据库。为了不要重新发明轮子,Apache 2.1 及以后的版本提供了`ap_dbd` API 来管理数据库连接(包括对线程型和非线程型MPM进行优化),同时 APR 1.2 及以后版本也提供了`apr_dbd` API 与数据库打交道。
新模块**应当**使用了这些API来进行数据库操作。现存的应用程序**应当**进行透明的升级或使用推荐选项来使用这些API。
- Apache HTTP Server Version 2.2 文档 [最后更新:2006年3月21日]
- 版本说明
- 从1.3升级到2.0
- 从2.0升级到2.2
- Apache 2.2 新特性概述
- Apache 2.0 新特性概述
- The Apache License, Version 2.0
- 参考手册
- 编译与安装
- 启动Apache
- 停止和重启
- 配置文件
- 配置段(容器)
- 缓冲指南
- 服务器全局配置
- 日志文件
- 从URL到文件系统的映射
- 安全方面的提示
- 动态共享对象(DSO)支持
- 内容协商
- 自定义错误响应
- 地址和端口的绑定(Binding)
- 多路处理模块
- Apache的环境变量
- Apache处理器的使用
- 过滤器(Filter)
- suEXEC支持
- 性能方面的提示
- URL重写指南
- Apache虚拟主机文档
- 基于主机名的虚拟主机
- 基于IP地址的虚拟主机
- 大批量虚拟主机的动态配置
- 虚拟主机示例
- 深入研究虚拟主机的匹配
- 文件描述符限制
- 关于DNS和Apache
- 常见问题
- 经常问到的问题
- Apache的SSL/TLS加密
- SSL/TLS高强度加密:绪论
- SSL/TLS高强度加密:兼容性
- SSL/TLS高强度加密:如何...?
- SSL/TLS Strong Encryption: FAQ
- 如何.../指南
- 认证、授权、访问控制
- CGI动态页面
- 服务器端包含入门
- .htaccess文件
- 用户网站目录
- 针对特定平台的说明
- 在Microsoft Windows中使用Apache
- 在Microsoft Windows上编译Apache
- Using Apache With Novell NetWare
- Running a High-Performance Web Server on HPUX
- The Apache EBCDIC Port
- 服务器和支持程序
- httpd - Apache超文本传输协议服务器
- ab - Apache HTTP服务器性能测试工具
- apachectl - Apache HTTP服务器控制接口
- apxs - Apache 扩展工具
- configure - 配置源代码树
- dbmmanage - 管理DBM格式的用户认证文件
- htcacheclean - 清理磁盘缓冲区
- htdbm - 操作DBM密码数据库
- htdigest - 管理用于摘要认证的用户文件
- httxt2dbm - 生成RewriteMap指令使用的dbm文件
- htpasswd - 管理用于基本认证的用户文件
- logresolve - 解析Apache日志中的IP地址为主机名
- rotatelogs - 滚动Apache日志的管道日志程序
- suexec - 在执行外部程序之前切换用户
- 其他程序
- 杂项文档
- 与Apache相关的标准
- Apache模块
- 描述模块的术语
- 描述指令的术语
- Apache核心(Core)特性
- Apache MPM 公共指令
- Apache MPM beos
- Apache MPM event
- Apache MPM netware
- Apache MPM os2
- Apache MPM prefork
- Apache MPM winnt
- Apache MPM worker
- Apache模块 mod_actions
- Apache模块 mod_alias
- Apache模块 mod_asis
- Apache模块 mod_auth_basic
- Apache模块 mod_auth_digest
- Apache模块 mod_authn_alias
- Apache模块 mod_authn_anon
- Apache模块 mod_authn_dbd
- Apache模块 mod_authn_dbm
- Apache模块 mod_authn_default
- Apache模块 mod_authn_file
- Apache模块 mod_authnz_ldap
- Apache模块 mod_authz_dbm
- Apache模块 mod_authz_default
- Apache模块 mod_authz_groupfile
- Apache模块 mod_authz_host
- Apache模块 mod_authz_owner
- Apache模块 mod_authz_user
- Apache模块 mod_autoindex
- Apache模块 mod_cache
- Apache模块 mod_cern_meta
- Apache模块 mod_cgi
- Apache模块 mod_cgid
- Apache模块 mod_charset_lite
- Apache模块 mod_dav
- Apache模块 mod_dav_fs
- Apache模块 mod_dav_lock
- Apache模块 mod_dbd
- Apache模块 mod_deflate
- Apache模块 mod_dir
- Apache模块 mod_disk_cache
- Apache模块 mod_dumpio
- Apache模块 mod_echo
- Apache模块 mod_env
- Apache模块 mod_example
- Apache模块 mod_expires
- Apache模块 mod_ext_filter
- Apache模块 mod_file_cache
- Apache模块 mod_filter
- Apache模块 mod_headers
- Apache模块 mod_ident
- Apache模块 mod_imagemap
- Apache模块 mod_include
- Apache模块 mod_info
- Apache模块 mod_isapi
- Apache模块 mod_ldap
- Apache模块 mod_log_config
- Apache模块 mod_log_forensic
- Apache模块 mod_logio
- Apache模块 mod_mem_cache
- Apache模块 mod_mime
- Apache模块 mod_mime_magic
- Apache模块 mod_negotiation
- Apache模块 mod_nw_ssl
- Apache模块 mod_proxy
- Apache模块 mod_proxy_ajp
- Apache模块 mod_proxy_balancer
- Apache模块 mod_proxy_connect
- Apache模块 mod_proxy_ftp
- Apache模块 mod_proxy_http
- Apache模块 mod_rewrite
- Apache模块 mod_setenvif
- Apache模块 mod_so
- Apache模块 mod_speling
- Apache模块 mod_ssl
- Apache模块 mod_status
- Apache模块 mod_suexec
- Apache模块 mod_unique_id
- Apache模块 mod_userdir
- Apache模块 mod_usertrack
- Apache模块 mod_version
- Apache模块 mod_vhost_alias
- Developer Documentation for Apache 2.0
- Apache 1.3 API notes
- Debugging Memory Allocation in APR
- Documenting Apache 2.0
- Apache 2.0 Hook Functions
- Converting Modules from Apache 1.3 to Apache 2.0
- Request Processing in Apache 2.0
- How filters work in Apache 2.0
- Apache 2.0 Thread Safety Issues
- 词汇和索引
- 词汇表
- 指令索引
- 指令速查
- 模块索引
- 站点导航