Apache 2.0 新特性概述
此文档描述了Apache 1.3和2.0版本之间的主要变化。
mod_echo就是一个例子。
对非Unix平台更好的支持
Apache2.0在诸如BeOS、OS/2、Windows等非Unix平台上有了更好的速度和稳定性。随着平台特定的多路处理模块(MPM)和Apache可移植运行时(APR)的引入,Apache在这些平台上的指令由它们本地的API指令实现。避免了以往使用POSIX模拟层造成的bug和性能低下。
新的 Apache API
2.0中模块的API有了重大改变。很多1.3中模块排序和模块优先级的问题已经不复存在了。2.0自动处理了很多这样的问题,模块排序现在用per-hook的方法进行,从而拥有了更多的灵活性。另外,增加了新的调用以提高模块的性能,而无需修改Apache服务器核心。
IPv6 支持
在所有能够由Apache可移植运行时库(APR library)提供IPv6支持的系统上,Apache默认使用IPv6侦听套接字。另外,Listen
、NameVirtualHost
、VirtualHost
指令也支持IPv6的数字地址串(比如:"Listen [2001:db8::1]:8080
")。
过滤器
Apache的模块现在可以写成过滤器的形式,当内容流经它进入服务器或从服务器流出的时候进行处理。比如,可以用mod_include
中的INCLUDES
过滤器将CGI脚本的输出解析为服务器端包含指令。而mod_ext_filter
允许外部程序充当过滤器的角色,就象用CGI程序做处理器一样。
多语种错误应答
返回给浏览器的错误信息现在已经用SSI文档实现了多语种化。管理员可以利用此功能进行定制以达到感观的一致。
简化了配置
很多易混淆的配置项已经进行了简化。经常产生混淆的Port
和BindAddress
配置项已经取消了;用于绑定IP地址的只有Listen
指令;ServerName
指令中指定的服务器名和端口仅用于重定向和虚拟主机的识别。
本地 Windows NT Unicode 支持
Apache2.0在WindowsNT上的文件名全部使用utf-8编码。这个操作直接转换成底层的Unicode文件系统,由此为所有以WindowsNT(包括Windows2000/XP/2003)为基础的安装提供了多语言支持。这一支持目前尚未涵盖Windows95/98/ME系统,因为它们仍使用机器本地的代码页进行文件系统的操作。
正则表达式库更新
Apache2.0包含了Perl兼容的正则表达式库(PCRE)。所有正则表达式现在都使用了更强大的Perl 5 语法。
Listen
、NameVirtualHost
、VirtualHost
指令也支持IPv6的数字地址串(比如:"Listen [2001:db8::1]:8080
")。mod_include
中的INCLUDES
过滤器将CGI脚本的输出解析为服务器端包含指令。而mod_ext_filter
允许外部程序充当过滤器的角色,就象用CGI程序做处理器一样。Port
和BindAddress
配置项已经取消了;用于绑定IP地址的只有Listen
指令;ServerName
指令中指定的服务器名和端口仅用于重定向和虚拟主机的识别。mod_ssl
Apache2.0中的新模块。此模块是OpenSSL提供的一个SSL/TLS加密协议接口。
mod_dav
Apache2.0中的新模块。此模块继承了HTTP分布式发布和版本控制规范,用于发布和维护web内容。
mod_deflate
Apache2.0中的新模块。此模块允许支持此功能的浏览器请求的页面内容在发送前进行压缩,以节省网络带宽。
mod_auth_ldap
Apache2.0.41中的新模块。此模块允许使用LDAP数据库存储HTTP基本认证所需的信息。随之而来的另一个模块mod_ldap
则提供了连接池和结果的缓冲。
mod_auth_digest
利用共享内存实现了对跨进程会话缓冲的额外支持。
mod_charset_lite
Apache2.0中的新模块。这个试验模块允许在不同的字符集之间进行转换和重新编码。
mod_file_cache
Apache2.0中的新模块。这个模块包含了Apache1.3中mod_mmap_static
模块的功能,另外进一步增加了缓冲能力。
mod_headers
此模块在Apache2.0中更具灵活性。现在,它可以更改mod_proxy
使用的请求头信息,并可以有条件地设置应答头信息。
mod_proxy
代理模块已经被完全重写以充分利用新的过滤器结构的优势,从而实现一个更为可靠的HTTP/1.1代理模块。另外,新的<Proxy>
配置段提供了更具可读性(而且更快)的代理站点控制;同时,重载<Directory "proxy:...">
指令的方法已经不再被支持了。这个模块现在依照协议支持分为proxy_connect
、proxy_ftp
、proxy_http
三个部分。
mod_negotiation
新的ForceLanguagePriority
指令可以确保在所有情况下客户端都收到一个单一文档,以取代不可接受或多选择的响应。另外,内容协商和MultiViews算法已经进行了优化以提供更完美的结果,并提供了包括文档内容的新类型表。
mod_autoindex
经过自动索引后的目录列表现在可被配置为使用HTML表格从而使格式更加清晰,而且允许更为细化的排序控制,包括版本排序和通配符过滤目录列表。
mod_include
新的指令集允许修改默认的SSI元素的开始和结束标签,而且允许以主配置文件里的错误提示和时间格式的配置取代SSI文档中的相应部分。正则表达式(现在已基于Perl的正则表达式语法)的解析和分组结果可以用mod_include
的变量 $0
.. $9
取得。
AuthDBMType
指令支持多种类似DBM的数据库。
mod_dav
mod_deflate
mod_auth_ldap
mod_ldap
则提供了连接池和结果的缓冲。mod_auth_digest
mod_charset_lite
mod_file_cache
mod_mmap_static
模块的功能,另外进一步增加了缓冲能力。mod_headers
mod_proxy
使用的请求头信息,并可以有条件地设置应答头信息。mod_proxy
<Proxy>
配置段提供了更具可读性(而且更快)的代理站点控制;同时,重载<Directory "proxy:...">
指令的方法已经不再被支持了。这个模块现在依照协议支持分为proxy_connect
、proxy_ftp
、proxy_http
三个部分。mod_negotiation
ForceLanguagePriority
指令可以确保在所有情况下客户端都收到一个单一文档,以取代不可接受或多选择的响应。另外,内容协商和MultiViews算法已经进行了优化以提供更完美的结果,并提供了包括文档内容的新类型表。mod_autoindex
mod_include
mod_include
的变量 $0
.. $9
取得。AuthDBMType
指令支持多种类似DBM的数据库。