# 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
- 詞匯和索引
- 詞匯表
- 指令索引
- 指令速查
- 模塊索引
- 站點導航