1、网络建设与服务技术丛书 Apache 服务器配置和管理 傅宇旭 等 编 著清 华 大 学 出 版 社 (京)新登字 158 号内 容 简 介本书主要介绍当前使用最为广泛的 WWW 服务器软件 Apache。 详 细 介 绍 了 Apache 服务器的安 装配置和安全管理。本书重点介绍如何在 Linux 平台下使用和管理 Apache 服 务 器 。 首 先 介 绍 如 何 获 取 、 编 译 、 配 置 和 运 行 Apache: 然后详细介绍如何管理一个己创建的 Web 站 点。 涉及的内容有 “服务器端包含” 命令 CSSI)、 如何对 “通用网关接口” CCGI)和 FastCGI 进
2、行配置使用等。 接着介绍如何实现 Apache 的一些高级特征, 例如如何在 Apache 中嵌入 Perl, 如 何 将 Apache 设置成代理服务器重写 URL 引擎。作为一个 Web 站点, 必 须 考 虑 它 的 安 全 性 , 本 书 详 细 介 绍 如 何 对 Apache 实 现 安 全 机 制 , 例 如 使 用 基 本 认 证 、 服 务 器 状 态 和 日 志、 安全 Socket 层等等。 为了让读者能够更好地了解 Apache 的工作情况, 我们还特别介绍了 Apache API 的一些工作情况。最后,通过介绍使用 Apache 创建一个 Web 网络的示例作为本书的
3、结束。全书的结构设计清楚, 内容深入浅出, 使读者能够在较短时间里掌握 Apache 服务器的使用、 管理和 开发。本书面向的对象是 Apache 服 务 器 用 户 和 管 理 人 员 。 当 然 , 如 果 你 是 一 名 初 学 者 , 本 书 也 可 以 作 为 你 的参考书籍,但是,你首先必须对 Linux 操作系统有一定的了解。版权所有,翻印必究。 本书封面贴有清华大学出版社激光防伪标签,无标签者不得销售。书 名 : Apache 服 务 器 配 置 和 管 理作 者:傅宇旭 等出 版 者 : 清 华 大 学 出 版 社 C北 京 清 华 大 学 学 研 大 厦 , 邮 编 : 1
4、00084)http:/印 刷 者 : 北 京 市 世 界 知 识 印 刷 厂发 行 者 : 新 华 书 店 总 店 北 京 发 行 所开 本 : 7871092 1/16 印 张 : 21.5 字 数 : 516 千字 版 次 : 2002 年 1 月 第 1 版 2002 年 1 月第 1 次印刷 书 号: ISBN 7-302-04975-0/TP2802印 数 : 00015000定 价 : 32.00 元丛 书 序经 过 长 时 间 的 策 划 、 编 写 、 修 改 与 订 正 , 本 套 书 终 于 得 以 与 读 者 见 面 了 。 编 写 本 套 丛 书 的 目 的 就 是
5、希 望 为 网 络 事 业 的 发 展 尽 一 点 微 薄 之 力 : 同 时 , 我 们 也 非 常 想 与 读 者 们 一 起 交流思想,相互学习。本 套 网 络 丛 书 主 要 介 绍 了 网 络 的 构 架 和 一 些 实 用 的 开 发 语 言 和 软 件 , 丛 书 一 共 有 6 本, 分别为: Apache 服 务 器 配 置 和 管 理 MySQL 高级配置和管理 PHP 语言进阶和高级应用 Email 服务器配置和管理 PostgreSQL 数据库开发和使用 网络安全和黑客揭密 使用 Apache 服 务 器 、 MySQL 数据库和 PHP 语言可以构架出十分出色的网站,
6、并且可 以进行高效的数据查询的信息传递,是目前非常流行和实用的软件。丛书的前 3 本就从这 三 种 工 具 入 手 , 深 入 浅 出 地 介 绍 和 探 讨 了 网 站 构 成 的 方 法 , 适 合 于 网 络 管 理 人 员 和 维 护 人 员使用C当然也适合于初学者,不过最好是先了解一些相关的 Linux 知识) 。由 于 邮 件 发 送 关 系 到 信 息 和 数 据 的 交 互 和 传 递 , 因 此 在 网 站 构 成 的 基 础 上 建 立 邮 件 系 统是一个重 点,进而怎 样配置和 管 理网站和邮 件系统就十 分重要了。 Em ail 服务器配置和 管理 一书的编篡就基于此
7、。 该书对常用的几种 Email 服务器的 安装、 配置和管理做了颇为 详尽的介绍, 希望使读者能够快速掌握 Email 服务器的管理和建议, 并将关于 Email 服务器 的知识提高到一个系统的层次。PostgreSQL 的应用在我国起步还不久,使用也比较少,但是它具有很好的前景和强大 的生命力。作为数据库系统,它在网络上的优点表现得越来越多,因而掌握 PostgreSQL 这 一 工 具 也 就 越 来 越 重 要 了 , 为 此 本 套 书 特 意 加 入 了 PostgreSQL 数 据 库 开 发 和 使 用 这 本 书 。随 着 网 络 的 发 展 , 网 络 的 安 全 也 变
8、得 越 来 越 重 要 , 怎 样 对 重 要 资 料 进 行 保 护 、 怎 样 防 止黑客入侵、 怎样构建防火墙等等, 在组建网站的时候, 这些问题都应当全面考虑。 网络 安 全 和 黑 客 揭 密 一 书 对 上 述 问 题 进 行 了 全 方 位 的 探 讨 , 并 且 补 充 了 前 几 本 书 中 对 于 安 全 问 题 说 明 的 不 足 之 处 。 该 书 从 基 本 的 网 络 和 网 络 安 全 知 识 讲 起 , 由 浅 入 深 , 内 容 丰 富 、 涵 盖 面 广 , 既 适 用 于 刚 开 始 学 习 网 络 和 网 络 安 全 的 初 学 者 , 也 可 供 中
9、级 和 高 级 的 网 络 管 理 者 和网络编程人员参考。Apache 服务器配置和管理 II以 上 是 本 套 丛 书 内 容 的 大 致 介 绍 , 作 者 相 信 本 套 丛 书 能 够 使 您 对 网 络 有 个 全 面 的 了 解 和掌握。由 于 编 者 水 平 有 限 , 成 书 时 间 紧 迫 , 书 中 可 能 存 在 着 一 些 错 误 和 不 足 之 处 , 敬 请 读 者 见谅,同时也非常欢迎读者和我们一起进行交流和探讨,提出宝贵的建议和意见。编 者 2001 年 8 月前 言Apache 是一 种主要运行在 Linux 或 Unix 系统下 的 Web 服 务 软件。
10、 因为 Apache 是由千 千 万 万 的 自 由 软 件 爱 好 者 共 同 开 发 的 一 种 服 务 器 软 件 , 并 且 人 们 一 直 在 努 力 增 强 和 完 善 它 的 性 能 , 所 以 Apache 既 是 一 种 优 秀 的 服 务 器 软 件 , 也 是 一 个 由 广 大 自 由 软 件 开 发 者 共 同 开 发的项目。相对于其他服务器软件而言,Apache 的优点是有目共睹的,使用它的站点稳定 性 更 高 、 速 度 更 快 、 性 能 更 优 越 , 因 此 Apache 深 受 广 大 用 户 的 喜 爱 。 据 统 计 , 现 在 70%的 Web 服
11、务 器 都 使 用 Apache, 这 足 以 说 明 它 的 魅 力 有 多 大 , 所 以 Apache 是当前使用得最为 广泛的 Web 服务器。任何一个想使用 Apache 的用户都可以从因特网上下载并安装该软件。如果你有兴趣, 还可以成为 Apache 的 开 发 者 对其源代码进行完善修改,然后提交给 Apache Group。Apache 的最 新稳定版本为 Apache 1.3.19。 不太熟 悉 Linux 和 Unix 操作系 统的读者, 也 可以使用 Apache, 因为 Apache 的开发 者己将 Apache 移植到 Windows 平台上, 并且, Apache
12、在 Windows 平台上的应用性能丝毫不比在 Linux 或 Unix 平台上逊色。 但是 , 根据当前 Apache 的使用现状,本书将重点介绍应用在 Linux 平 台 上 的 Apache。本书详细介绍如何将性能优越的 Apache 服 务 器 软 件 安 装 到 功 能 强 大 的 Linux 操 作 系 统 上,以及如何管理 Apache 服 务 器 。 相 信 您 通 过 本 书 的 学 习 , 会 成 为 一 名 出 色 的 Apache 服 务器使用者或管理员。因为水平和时间有限,书中的错误在所难免,欢迎广大读者不吝批评指正。编 者 2001 年 6 月于北京目 录第 1 章
13、 Apache 概述 .11.1 Apache 的 发 展 历 程 11.2 Apache 的 主 要 特 征 11.3 Apache 的 结 构 31.4 Apache 的 前 景 41.5 许 可 证 问 题 .41.6 小结 5第 2 章 Apache 的安装 62.1 获取 Apache 源代码 62.2 配 置 源 代 码 .72.2.1 配 置 选 项 .72.2.2 配 置 源 代 码 .112.3 安装 Apache 142.4 Apache 对 系 统 配 置 的 需 求 152.5 Apache 的 更 新 162.6 小结 16第 3 章 Apache 的基本配置 .17
14、3.1 Apache 服 务 器 的 配 置 基 础 173.1.1 srm.conf 183.1.2 access.conf 183.1.3 httpd.conf 183.2 Apache 的 主 配 置 253.3 主 服 务 器 的 配 置 .323.4 配 置 虚 拟 主 机 .363.4.1 什 么 是 虚 拟 主 机 363.4.2 虚 拟 主 机 的 Apache 配置 383.4.3 配 置 不 同 类 型 的 虚 拟 主 机 423.4.4 不 同 类 型 虚 拟 主 机 之 间 的 转 换 473.4.5 虚 拟 主 机 的 调 试 473.5 控 制 服 务 器 .483
15、.6 测试 Apache 483.7 小结 49第 4 章 Apache 模块 .504.1 mod_access50Apache 服务器配置和管理 VI4.1.1 Allow.504.1.2 Allow from env=variable514.1.3 Deny524.1.4 Deny from env=variable .524.1.5 Order .534.2 mod_actions.534.2.1 Action544.2.2 Script.564.3 mod_alias.574.3.1 Alias 574.3.2 AliasMatch584.3.3 Redirect.584.3.4 R
16、edirectMatch.594.3.5 RedirectTemp.594.3.6 RedirectPermanent594.3.7 ScriptAlias 604.3.8 ScriptAliasMatch 604.4 mod_asis 604.5 mod_auth .614.5.1 AuthAuthoritative .614.5.2 AuthUserFile.624.5.3 AuthGroupFile624.6 mod_auth_anon .624.6.1 Anonymous.634.6.2 Anonymous_Authoritative .634.6.3 Anonymous_LogEma
17、il.634.6.4 Anonymous_MustGiveEmail.634.6.5 Anonymous_NoUserID644.6.6 Anonymous_VerifyEmail644.7 mod_auth_db .644.7.1 AuthDBGroupFile 644.7.2 AuthDBUserFile.654.7.3 AuthDBAuthoritative .654.8 mod_auth_dbm 664.8.1 AuthDBMUserFile .664.8.2 AuthDBMGroupFile.664.8.3 AuthDBMAuthoritative674.9 mod_auth_ext
18、ernal 674.9.1 AddExternalAuth674.9.2 AddExternalGroupAuth684.9.3 SetExternalAuthMethod .684.9.4 SetExternalGroupMethod.694.9.5 AuthExternal.704.9.6 GroupExternal.70目 录4.10 mod_autoindex 734.10.1 AddAlt. .734.10.2 AddAltByEncoding 744.10.3 AddAltByType.744.10.4 AddDescription.754.10.5 AddIcon 754.10.
19、6 AddIconByEncoding 754.10.7 AddIconByType.764.10.8 DefaultIcon. 764.10.9 FancyIndexing 764.10.10 HeaderName .764.10.11 Ignore 774.10.12 IndexOptions.774.10.13 IndexOrderDefault794.10.14 ReadmeName804.11 mod_browser .804.12 mod_cern_meta .804.12.1 MetaFiles 814.12.2 MetaDir.814.12.3 MetaSuffix 814.1
20、3 mod_cgi .824.13.1 ScriptLog 824.13.2 ScriptLogLength.824.13.3 ScriptBuffer 834.14 mod_cookies834.14.1 cookielog.834.15 mod_digest.834.15.1 AuthDigestFile834.16 mod_dir844.16.1 DirectoryIndex844.17 mod_dld .854.17.1 LoadFile854.17.2 LoadModule854.18 mod_env 854.18.1 PassEnv.864.18.2 SetEnv.864.18.3
21、 UnsetEnv.864.19 mod_expires.864.19.1 ExpiresActive .874.19.2 ExpiresByType 874.19.3 ExpiresDefault 884.20 mod_headers894.20.1 Header.894.21 mod_imap 89Apache 服务器配置和管理 VI4.21.1 ImapMenu.904.21.2 ImapDefault 904.21.3 ImapBase 914.22 mod_include 924.22.1 XbitHack.934.23 mod_info934.23.1 AddModuleInfo
22、934.24 mod_log_agent 944.24.1 AgentLog 944.25 mod_log_config.944.25.1 CookieLog 944.25.2 CustomLog .944.25.3 LogFormat 954.25.4 TransferLog 954.26 mod_log_referer 964.26.1 RefererLog964.26.2 RefererIgnore964.27 mod_mime.964.27.1 AddEncoding 974.27.2 AddHandler.974.27.3 AddLanguage974.27.4 AddType984
23、.27.5 DefaultLanguage.984.27.6 ForceType 984.27.7 RemoveHandler 994.27.8 SetHandler 994.27.9 TypesConfig.1004.28 mod_mime_magic .1004.28.1 MimeMagicFile 1004.29 mod_mmap_static1014.29.1 MmapFile1014.30 mod_negotiation 1014.30.1 CacheNegotiatedDocs 1024.30.2 LanguagePriority 1024.31 mod_proxy.1034.32
24、 mod_rewrite.1034.32.1 RewriteEngine 1034.32.2 RewriteOpition .1034.32.3 RewriteLog. 1044.32.4 RewriteLogLevel. .1044.32.5 RewriteMap 1044.32.6 RewriteLock .1044.32.7 RewriteBase1054.32.8 RewriteRule 105目 录4.32.9 RewriteCond.1054.33 mod_setenvif .1054.33.1 BrowserMatch.1054.33.2 BrowserMatchNoCase10
25、64.33.3 SetEnvlf 1064.33.4 SetEnvlfNoCase1074.34 mod_speling.1074.34.1 CheckSpelling.1074.35 mod_status.1084.35.1 ExtendStatus .1084.36 mod_userdir.1094.36.1 UseDir.1094.37 mod_unique_id 1104.38 mod_usertrack1104.38.1 CookieExpires.1104.38.2 CookieTracking 1104.39 小结 .111第 5 章 SSI1125.1 SSI 的基本概念 11
26、25.2 配置 SSI .1125.3 SSI 基本指令 .1145.4 SSI 变 1215.5 SSI 流控制指令 1225.6 小结 124第 6 章 CGI 配置 .1256.1 CGI 简介 1256.2 为 CGI 配置 Apache .1256.2.1. 使用 ScriptAlias 命令 .1256.2.2 选定 CGI 文件的扩展名 .1266.2.3 允 许 用 户 访 问 cgi-bin1276.3 技术内幕 1296.3.1 环境变 1296.4 编写 CGI 程序 1316.4.1 第 一 个 简 单 的 CGI 程 序 .1316.4.2 一 个 较 复 杂 的 C
27、GI 程 序 .1336.5 调试 CGI 程序 1526.6 小结 153第 7 章 FastCGI .1547.1 FastCGI 简介 .1547.1.1 什么是 FastCGI 1547.1.2 FastCGI 的工作原理 .1557.1.3 FastCGI 的优势 .1557.2 为 FastCGI 配置 Apache156Apache 服务器配置和管理 VI7.2.1 Apache 中的一些指令 .1577.2.2 配置 mod_fastcgi1587.3 编写 FastCGI 脚本 .1607.3.1 使用 FCGI.pm 编写 FastCGI 脚本程序 1607.3.2 使用
28、CGI.pm 编写 FastCGI 脚本程序 1607.4 小结 161第 8 章 Apache 中的 mod_Perl.1628.1 什么是 mod_perl1628.2 安装 mod_perl .1638.3 使用 mod_perl 加速 CGI 脚本的运行 .1648.4 开发基于 mod_perl 的 Perl 模块 .1668.5 为 Perl 配置 Apache1688.6 mod_perl 和 SSI 的集成 .1718.7 mod_perl 的缺陷 1728.7.1 系 统 资 源 问 题 .1728.7.2 安 全 问 题 .1728.8 小结 173第 9 章 Apache
29、 代理服务器 .1749.1 代 理 服 务 器 的 概 念 .1749.2 设置 Apache 代理服务器 1759.2.1 编译 mod_proxy.1759.2.2 mod_proxy 指令 1769.2.3 ProxyPass1779.2.4 ProxyPassReverse.1779.2.5 ProxyBlock .1789.2.6 ProxyReceiveBufferSize 1789.2.7 NoProxy1799.2.8 ProxyDomain1799.2.9 ProxyVia 1799.2.10 CacheForceCompletion 1809.2.11 CacheRoot
30、.1809.2.12 CacheSize .1809.2.13 CacheGcInterval .1819.2.14 CacheMaxExpire 1819.2.15 CacheLastModifiedFactor 1819.2.16 CacheDirLengeth1829.2.17 CacheDirLevels 1829.2.18 CacheDefaultExpire1829.2.19 NoCache .1839.3 配 置 代 理 服 务 器 .1839.3.1 将专用 IP 网络连接到因特网 1849.3.2 缓 存 远 程 Web 站点 .1849.3.3 建立 Web 站点的镜像 .
31、1859.3.4 建 立 逆 向 代 理 服 务 器 185目 录9.4 设置 Web 浏览器 .1869.4.1 手 工 代 理 配 置 .1869.4.2 手 工 配 置 NETSCAPE .1869.4.3 自 动 代 理 配 置 .1879.5 小结 194第 10 章 重 写 URL 19510.1 URL 重写引擎 mod_rewrite 模块 19510.1.1 RewriteEngine 19510.1.2 RewriteOpition .19610.1.3 RewriteLog. 19610.1.4 RewriteLogLevel19710.1.5 RewriteMap 19
32、710.1.6 RewriteLock .19910.1.7 RewriteBase19910.1.8 RewriteRule 20010.1.9 RewriteCond.20210.2 URL 规则应用 .20510.2.1 把 被 请 求 的 URL 扩展为标准的 URL .20510.2.2 设 置 基 于 URL 的环境变 20510.2.3 创建 站点 .20610.2.4 将 访 问 失 败 的 URL 重新定向给新 WEB 服务器 20610.2.5 创 建 基 于 时 间 的 URL .20610.2.6 使 URL 向后兼容 20710.2.7 创 建 传 送 内 容 与
33、浏 览 器 类 型 有 关 的 URL .20710.2.8 为 CGI 网关创建 HTML.20710.2.9 创 建 基 于 HTTP 引用的 URL 转向功能 .20810.2.10 其 他 使 用 情 况 20810.3 小结 209第 11 章 基 本 认 证 21011.1 基本 HTTP 格式的认证 .21011.1.1 使用 mod_auth 模块 21011.1.2 使用 mod_auth_dbm 模块 .21211.1.3 使用 mod_auth_db 模块 21411.1.4 使用 mod_auth_anon 模块 21511.1.5 使用 mod_auth_extern
34、al 模块 .21511.2 digest 认证 22011.3 基于主机的认证 22011.4 小结 221第 12 章 服 务 器 状 态 和 日 志 22212.1 访问 Apache 配置状态 22212.2 监 视 服 务 器 状 态 信 息 .22312.2.1 使 用 状 态 页 .22312.2.2. 简 化 状 态 显 示 224XII Apache 服务器配置和管理 12.2.3 存 储 服 务 器 状 态 信 息 22412.3 生 成 服 务 器 日 志 文 件 .22512.3.1 日 志 指 令 .22612.3.2 定 制 日 志 文 件 22712.3.3 生
35、成 多 个 日 志 文 件 22812.4 存 储 指 定 信 息 .22912.4.1 存 储 引 用 者 的 信 息 22912.4.2 存 储 用 户 代 理 信 息 23012.4.3 存储 cookie.23012.5 使 用 错 误 日 志 .23212.6 分 析 日 志 文 件 .23312.7 日 志 的 维 护 .23412.7.1 使用 logrotate .23512.7.2 使用 rotatelog .23512.8 小结 235第 13 章 Apache 的安全 Socket 层 .23613.1 什 么 是 安 全 Socket 层 CSSL)23613.1.1
36、对 称 加 密 .23613.1.2 非 对 称 加 密 23613.1.3 SSL 的工作原理 23713.2 使用 mod_ssl.23813.2.1 获取 mod_ssl 23813.2.2 编 译 和 安 装 mod_ssl 23813.2.3 为 mod_ssl 配置 Apache .23913.2.4 获取 CA 授权的证书 25213.3 使用 Apache-SSL25213.3.1 获 取 和 创 建 SSLeay .25213.3.2 获 取 和 创 建 Apache-SSL.25313.3.3 生 成 一 个 临 时 证 书 25413.3.4 为 Apache-SSL 配
37、置 Apache 25413.3.5 检 测 服 务 器 .26113.4 使用 Stronghold 26313.4.1 安装 Stronghold26313.4.2 配置 Stronghold26413.4.3 获取 CA 授权的证书 26513.4.4 创 建 专 用 的 证 书 颁 发 机 构 26613.5 小结 269第 14 章 Apache 中的 API27014.1 基本概念 27014.1.1 处 理 、 模 块 和 请 求 27014.1.2 模 块 概 述 .27014.2 处 理 程 序 的 工 作 情 况 .27214.2.1 request_rec 概述 273目
38、录 XIII14.2.2 request_rec 结构的起源 27514.2.3 处 理 请 求 , 拒 绝 和 返 回 错 误 代 码 27514.2.4 响 应 处 理 的 特 殊 事 项 27514.2.5 认 证 处 理 的 特 殊 事 项 27714.2.6 记 录 处 理 的 特 殊 事 项 27714.3 资 源 分 配 和 资 源 池 Cresouce pools).27714.3.1 池 中 的 内 存 分 配 27814.3.2 分 配 初 始 化 内 存 27814.4 配 置 、 命 令 等 问 题 .27814.4.1 针 对 目 录 的 配 置 结 构 27914.
39、4.2 命 令 处 理 28014.4.3 针 对 服 务 器 的 配 置 28314.5 小结 283第 15 章 使 用 Apache 组建 Web 网络 .28415.1 Web 网络 28415.1.1 Web 网络的需求 .28415.1.2 理 解 需 求 28515.2 组建 Web 网络 .28615.2.1 设 计 方 案 28615.2.2 选 择 硬 件 和 软 件 28715.2.3 组 建 系 统 28715.2.4 设置 DNS 服务器 .28815.2.5 配置 Apache .30115.2.6 使用 FTP 用户账号 30215.3 测试 Web 网络系统 .
40、30315.4 小结 304附录 A HTTP/1.1 状态码 .305A.1 信息状态码 C100-199) 305A.2 用户请求成功代码 C200-299) 305A.3 请求重定向代码 C300-399) 306A.4 用户请求未完成代码 C400-499) 306A.5 服务器错误 C500-599) 307附录 B 常 用 的 内 核 命 令 308B.1 Server ConfigC服 务 器 配 置 )环 境 .308B.2 ContainerC容 器 )环 境 308B.3 Pre-DirectoryC针 对 目 录 )环 境 .309B.4 常规配置命令 .310B.5 性
41、能和资源配置指令 .315B.6 标准的容器命令 .317B.7 记录日志命令 .319B.8 认证和安全指令 .320附录 C 规 则 表 达 式 使 用 规 则 324第 1 章 Apache 概述Apache 是 一 个 功 能 强 大 、 非 常 灵 活 的 Web 服 务 器 。 到 目 前 为 止 , 大 约 有 超 过 700 万 台 的 Apache 服 务 器 在 Internet 上运行,数量居各种运行在 Internet 上的服务器之首。那么, Apache 究 竟 是 怎 样 一 种 服 务 器 呢 ? 它 究 竟 又 具 有 什 么 样 的 特 点 而 深 受 人 们
42、 的 喜 爱 呢 ? 带 着 这些问题,我们将在本章向你介绍 Apache 的 一 些 基 础 知 识 。1.1 Apache 的 发 展 历 程Apache 起初 只是应用在 UINX 的 Web 服务器上, 但随着开发者对其所做的修改越来越 完善, 使其功能也日益强大 。 时至今日, Apache 能够应用 在 几乎所有的计算机开发平台 上 , 如 Unix、 Linux、 Netware 5.x、 Windows 95/98/NT, 以 及 Windows 2000 上 , 对 于 其 他 许 多 服务器类的操作平台(如 OS/2、Am iga 等 ) ,也 有 Apache 的 用武之
43、地。1995 年 以 前 , 由 于 当 时 商 品 化 的 软 件 , 如 微 软 的 IIS( 因 特 网 信 息 服 务 器 ) 和 Netscape 的系列产品尚未问世,而其他一些软件还不能够满足应用的需要,所以大多数用户对 Web 服务器软件都不太满意。1995 年 , 美 国 国 家 计 算 机 安 全 协 会 ( NCSA) 编 写 了 一 个 Web 服 务 器 。 该 服 务 器 当 时 看起来很好, 但是后来, NCSA Web 服务器的核心开发人员几乎都离开了 NCSA, 致 使这个 开发项目一度陷入停顿。与此同时,那些使用 NCSA Web 服务器的人们开始相互交换他们
44、 为 该 服 务 器 编 写 的 补 丁 , 这 使 他 们 很 快 认 识 到 成 立 一 个 管 理 这 些 补 丁 程 序 的 组 织 很 有 必 要 。 于是, Apache Group 应运而 生了 , 他们把 该 Web 服务 器软件称为 Apache。 Apache 源自 a patchy server 的 读 音 , 意 思 是 充 满 补 丁 的 服 务 器 , 因 为 该 软 件 的 补 丁 实 在 是 太 多 了 , 而 补 丁 就 是 为 程 序 代 码 补 充 漏 洞 的 东 西 。 这 些 软 件 精 英 们 开 发 了 这 样 一 个 项 目 , 且 这 个 项
45、目 最 终 创 造 了 世界上最流行的 Web 服 务 器 软 件 。Apache Group 只对那些提交到他们手中的新代码进行审查、完成测试、并进行质量控 制检查。如果对提交的代码感到满意,那么这些代码将被集成到 Apache 的 主 要 发 行 版 中 。 1995 年 4 月 , 最 早 的 Apache( 0.6.2 版 ) 公 开 发 行 , 而 1.0 版 则 于 1995 年 12 月 1 日发布。到 2001 年初,Apache 的 最 新 稳 定 版 本 1.3.19 正式推出了。1.2 Apache 的 主 要 特 征Apache 的最 大特点是它所采用的是开发模式: 开
46、放源代码。 开放源代码的优点有两个:Apache 服务器配置和管理 2一是软件免费;二是开发的产品功能非常强大。由于 Apache 为 自 由 软 件 , 所 以 它 可 以 吸 引 全 世 界 很 多 的 开 发 人 员 。 今 天 , 这 些 开 发 人 员已为 Apache 编 写 出 了 许 多 优 秀 的 模 块 , 而 许 多 这 样 的 模 块 能 够 满 足 用 户 对 功 能 的 需 要 。 如果这些模块都不是你想要的,那么你可以开发出自己想要的模块。我们在本书主要介绍的是应用在 Linux 下 的 Apache。 除 了 上 述 特 征 , Apache 还有许多 重要的特
47、征。 支持最新的 HTTP1.1 协 议 Apache 是最先使用 HTTP1.1 协议的服务器之一。 Apache 与 HTTP1.1 的 完 全 兼 容 及 其 对 HTTP1.0 的 向 后 兼 容 使 其 具 有 更 加 优 越 的 性 能。例如,HTTP1.1 出 现 之 前 , Web 浏览器在发出另一个请求之前,必须等待来 自 Web 服 务 器 的 响 应 。 HTTP1.1 出 现 之 后 , 就 不 会 出 现 这 种 情 况 。 现 在 , Web 浏 览器可以并发地发送请求,而且不需要在每个请求中都传送 HTTP 头 标 , 从 而 节 省 了 带 宽 。 这 使 得
48、最 终 用 户 端 的 性 能 得 到 提 高 , 并 使 平 行 请 求 的 文 件 在 浏 览 器 中 显示时更迅速。 简明强大的配置Apache 服务器没 有为管理员提供图形用户界面。 但是, Apache 提供了三个简单的文本配置文件,通过这些文件可以定制自身的 Apache, 而 你 所 需 要 做 的 只 是 选 择 适 合 自 己 的 文 本 编 辑 程 序 编 辑 这 些 文 件 。 如 果 将 这 三 个 配 置 文 件合并成一个文件,还可以大大地简化配置任务。 支持虚拟主机Apache 是首批既支 持基于 IP 的虚拟主机, 又支持命名虚拟主机 的 Web 服 务 器 之 一 。 支 持 “服 务 器 端 包 含 ”命 令 ( SSI) Apache 提 供 扩 展 过 的 “服 务 器 端 包 含 ”命 令, 这为 Web 站点开发人 员提供了更大的灵活性。 通过在 Apache 中使用经 过扩展 的 Server Side Includes 命 令 , 可 以 完 成 任 何 可 以 通 过 SSI 完成的事情。除此以外, 还可以用它来做一些其他的事情。 支持 “通用网关接口” ( CGI) Apache 用 mod_cgi 模块来 支持 CGI。 该模块遵 守 CGI1.1 标 准 。 此 外 , 它 还 提 供 一 些 扩 展 的 特 性 , 如 定