Apache Cookbook中文版(第二版)
Apache Cookbook中文版(第二版)
Ken Coar, Rich Bowen
出版时间:2009年01月
虽然有大量关于Apache服务器安装和配置的文档,但在日常工作中碰到诸如为服务器增加模块,或者调优服务器活动日志之类的问题时,该从哪找到好的解决办法呢?新版的Apache Cookbook为您提供了超过200个针对Apache 2.0及2.2最可能碰到的问题的解决办法。
Apache包含了许多的扩展。如果您需要更多,可以在用户新闻组中或与Apache相关的邮件列表中寻找,或者直接通过IRC聊天频道提问。本书中,您可以方便地找到节约时间的解决办法,主要包括以下几类:
* 安装常见的第三方模块
* 记录访问Web站点的客户及使用Apache的错误日志机制
* 使用单个Apache服务器及配置文件集合运行多个Web站点
* 处理URL——控制它们指向的文件,改变URL的指向及指向另外的站点
* 保护Apache,防止其受到攻击或暴露漏洞
* 让Apache控制由SSL浏览器提出的安全交易——对于银行转账或医疗记录来说,这些敏感数据是必须的
* 使用运行脚本加强Apache,使之作为一个特定用户运行
* 自定义Apache的错误消息,让您的站点更个性化
* 配置Apache,使其作为Web页面和用户之间的代理服务器
* 解决性能瓶颈及提高Apache的吞吐能力
如果您在Linux、FreeBSD、Solaris或Windows上运行Apache,则无论您是初学者还是有经验的用户,《Apache Cookbook》第二版都可以给您提供帮助。书中的每个问题都来自真实世界,这些问题都是作者或其他需要找寻帮助的人在工作当中碰到的。
Ken Coar是《Apache Server for Dummies》的作者及《Apache Server Unleashed》的合著者。他负责分类发送给Apache项目的邮件;他的邮件列表给本书提供了一个基础。
Rich Bowen主要从事Apache Web server的文档工作。他是《Apache Administrator’s Handbook》及《Apache Cookbook》第一版的合著者。
  1. 前言 I
  2. 第1章 安装 1
  3. 1.1 使用红帽Linux的软件包安装Apache服务器 2
  4. 1.2 使用Debian的软件包安装Apache服务器 3
  5. 1.3 在Windows环境下安装Apache服务器 4
  6. 1.4 下载Apache服务器的源代码 11
  7. 1.5 使用源代码编译Apache服务器 13
  8. 1.6 使用ApacheToolbox进行安装 14
  9. 1.7 启动、停止、重启Apache服务器 16
  10. 1.8 卸载Apache服务器 17
  11. 1.9 选择合适的Apache服务器版本 20
  12. 1.10 使用config.nice文件进行升级 21
  13. 1.11 在系统启动时自动运行Apache服务器 22
  14. 1.12 一些有用的configure 命令参数 23
  15. 1.13 寻找Apache的文件 25
  16. 第2章 增加常用模块 27
  17. 2.1 安装一般的第三方模块 28
  18. 2.2 在类Unix系统下安装mod_dav 28
  19. 2.3 在Windows环境下安装mod_dav 31
  20. 2.4 在类Unix系统下安装mod_perl 33
  21. 2.5 在类Unix系统下安装mod_php 35
  22. 2.6 在Window环境下安装mod_php 36
  23. 2.7 为Apache服务器安装mod_ssl 37
  24. 2.8 在modules.apache.org上寻找Apache module 38
  25. 2.9 安装mod_security 39
  26. 2.10 为什么这个Module不工作呢 40
  27. 第3章 日志 43
  28. 3.1 在日志内容中取得更详细的信息 46
  29. 3.2 获得更详细的错误信息 47
  30. 3.3 记录网页的POST内容 49
  31. 3.4 记录通过代理服务器请求网页的客户端IP地址 50
  32. 3.5 记录客户端的MAC地址 51
  33. 3.6 记录Cookie 51
  34. 3.7 不记录来自本机网页的网页请求 53
  35. 3.8 在特定的时刻更新日志 54
  36. 3.9 在每月的第一天更新日志文件 55
  37. 3.10 记录主机名称而非IP地址 56
  38. 3.11 替每个虚拟主机维护各自的日志 57
  39. 3.12 记录经过代理服务器的请求 58
  40. 3.13 将虚拟主机的错误记录至多个文件 59
  41. 3.14 记录服务器的IP地址 60
  42. 3.15 记录引用网页 61
  43. 3.16 记录浏览器软件的名称 62
  44. 3.17 记录请求标头中的任意字段 63
  45. 3.18 记录响应标头中的任意字段 63
  46. 3.19 将活动日志记录到MySQL数据库 64
  47. 3.20 将日志记录至syslog 65
  48. 3.21 记录用户的目录 67
  49. 第4章 虚拟主机 69
  50. 4.1 设置一个基于域名的虚拟主机 70
  51. 4.2 指定一台以域名寻址的主机为默认服务器 72
  52. 4.3 建立以IP寻址的虚拟主机 73
  53. 4.4 建立以IP寻址的默认虚拟主机 73
  54. 4.5 混用以IP寻址以及以域名寻址的虚拟主机 74
  55. 4.6 以mod_vhost_alias建立大量的虚拟主机 75
  56. 4.7 以Rewrite规则建立大量的虚拟主机 77
  57. 4.8 替每个虚拟主机建立日志记录 78
  58. 4.9 分割日志文件 79
  59. 4.10 以端口寻址的虚拟主机 79
  60. 4.11 在多个地址上显示相同的网页内容 80
  61. 4.12 在数据库里定义虚拟主机 81
  62. 第5章 别名、重定向及重写 83
  63. 5.1 将URL对应到一个目录 83
  64. 5.2 给现有的网页内容创建新的URL 85
  65. 5.3 让用户有他们自己的URL 86
  66. 5.4 以单一指令建立数个URL别名 89
  67. 5.5 映射数个URL到相同的CGI目录 89
  68. 5.6 替每位用户创建CGI目录 90
  69. 5.7 重定向到其他位置 91
  70. 5.8 将多个URL重定向到同一位置 93
  71. 5.9 允许不区分大小写的URL 93
  72. 5.10 在网页上高亮显示PHP源代码,而不需要建立符号链接 94
  73. 5.11 替换请求URL中的文字 96
  74. 5.12 将路径信息重写至CGI参数 96
  75. 5.13 拒绝访问未被引用的请求 97
  76. 5.14 重定向未引用的请求到一个说明页面 98
  77. 5.15 依据查询字符串来重写 99
  78. 5.16 将服务器的全部或部分重定向至SSL 100
  79. 5.17 将目录转换成主机名称 101
  80. 5.18 将所有的请求重定向至单一主机 102
  81. 5.19 将文件名称转换成参数 102
  82. 5.20 URL路径和查询字符串的重写 103
  83. 5.21 重写一个主机名称为一个目录 104
  84. 5.22 把URL的一部分作为查询参数传入 104
  85. 5.23 使用AliasMatch、ScriptAliasMatch, 以及RedirectMatch指令 105
  86. 第6章 安全防护 107
  87. 6.1 使用系统账号信息在Web上进行身份验证 109
  88. 6.2 设定一次性的密码 110
  89. 6.3 使密码过期 111
  90. 6.4 限制上传文件的大小 113
  91. 6.5 禁止在网站外使用图像 115
  92. 6.6 同时要求弱验证与强验证 116
  93. 6.7 管理.htpasswd文件 117
  94. 6.8 给摘要验证制作密码文件 119
  95. 6.9 在子目录中放宽安全限制 120
  96. 6.10 选择性地提升安全限制 122
  97. 6.11 使用文件所有权来授权 124
  98. 6.12 将用户的证书存入MySQL数据库 124
  99. 6.13 得到通过验证的用户名称 126
  100. 6.14 获取验证用户的密码 127
  101. 6.15 防止暴力式的密码攻击 128
  102. 6.16 摘要与基本验证的比较 129
  103. 6.17 访问内含在URL中的证书 130
  104. 6.18 安全的WebDAV 130
  105. 6.19 启用WebDAV,但禁止Web用户写入文件 131
  106. 6.20 禁止通过代理服务器访问特定的URL 132
  107. 6.21 以封装程序保护文件 134
  108. 6.22 保护服务器文件免于恶意脚本的攻击 136
  109. 6.23 设定正确的文件使用权限 136
  110. 6.24 运行最基本的模块 139
  111. 6.25 禁止访问网站根目录外的文件 141
  112. 6.26 根据用户使用不同的限制方法 142
  113. 6.27 禁止部分请求 143
  114. 6.28 使用mod_evasive防止DOS(拒绝服务)攻击 145
  115. 6.29 使用mod_security隔离(Chroot)Apache服务器 146
  116. 6.30 移植到 Apache 2.2 版的权限验证 147
  117. 6.31 使用mod_security阻挡蠕虫攻击 148
  118. 6.32 使用只读和写的混合权限访问一个Subversion Repository 149
  119. 6.33 使禁止访问的URL重定向到一个固定的地址 150
  120. 第7章 SSL 153
  121. 7.1 安装SSL 153
  122. 7.2 在Windows环境下安装SSL 155
  123. 7.3 产生一个自签署的SSL证书 155
  124. 7.4 产生一个被信任的CA 160
  125. 7.5 让网站的一部分由SSL提供服务 161
  126. 7.6 使用客户端证书来验证 163
  127. 7.7 SSL虚拟主机 164
  128. 7.8 通配符证书 166
  129. 第8章 动态网页内容 167
  130. 8.1 启用CGI目录 167
  131. 8.2 在不使用ScriptAlias的目录中启用CGI脚本 168
  132. 8.3 给一个CGI目录指定默认的文档 169
  133. 8.4 使用Windows扩展名来启动CGI程序 171
  134. 8.5 使用扩展名来辨别CGI脚本 172
  135. 8.6 测试CGI是否被正确设定 173
  136. 8.7 读取窗体参数 176
  137. 8.8 为特定的内容类型调用CGI程序 178
  138. 8.9 使SSI能顺利工作 180
  139. 8.10 显示上次修改的日期 182
  140. 8.11 包含一个标准的页头 182
  141. 8.12 包含一个CGI程序的输出 183
  142. 8.13 使用suexec以不同的用户身份来运行CGI程序 184
  143. 8.14 从CPAN安装mod_perl处理器 186
  144. 8.15 编写mod_perl处理器 187
  145. 8.16 启用PHP脚本处理 189
  146. 8.17 验证PHP安装是否成功 189
  147. 8.18 在CGI程序的输出中支持服务器端包含指令 190
  148. 8.19 让ScriptAlias目录中的脚本程序的输出支持服务器端包含指令 191
  149. 8.20 让所有的Perl脚本被mod_perl来执行 192
  150. 8.21 开启Python脚本处理 193
  151. 第9章 错误处理 195
  152. 9.1 处理漏掉的Host字段 195
  153. 9.2 改变CGI脚本的响应状态 196
  154. 9.3 自定义报错信息 197
  155. 9.4 提供多种语言的错误文档 198
  156. 9.5 将非法URL重定向到其他网页 199
  157. 9.6 让Internet Explorer 显示你的报错网页 200
  158. 9.7 当发生错误状况时,得到通知 201
  159. 第10章 代理服务器 203
  160. 10.1 保护你的代理服务器 203
  161. 10.2 防止代理服务器被作为开放式的邮件转发工具 205
  162. 10.3 将请求传递给其他服务器 205
  163. 10.4 阻断对特定位置的代理请求 207
  164. 10.5 以其他服务器作为mod_perl网页内容的代理服务器 207
  165. 10.6 配置一个启用高速缓存功能的代理服务器 208
  166. 10.7 过滤代理的网页内容 209
  167. 10.8 对代理服务器要求进行身份验证 210
  168. 10.9 使用mod_proxy_balancer进行负载均衡 211
  169. 10.10 虚拟主机的代理 212
  170. 10.11 拒绝代理FTP请求 212
  171. 第11章 性能 215
  172. 11.1 决定需要多少内存 215
  173. 11.2 使用ab对Apache进行基准测试 217
  174. 11.3 调节保持连接(KeepAlive)的设定 218
  175. 11.4 得到网站获得快照 220
  176. 11.5 避免DNS查询 221
  177. 11.6 最佳化符号链接 222
  178. 11.7 最小化.htaccess文件对性能的影响 223
  179. 11.8 禁用网页内容协商 225
  180. 11.9 最佳化进程的产生 227
  181. 11.10 调节线程的产生 228
  182. 11.11 将经常查看的文件存入高速缓冲区 229
  183. 11.12 平均分配各服务器间的负载 231
  184. 11.13 将目录列表存入高速缓冲区 232
  185. 11.14 使用mod_perl加速Perl CGI程序的运行 233
  186. 11.15 缓存动态内容 235
  187. 第12章 目录列表 237
  188. 12.1 生成目录内容列表 237
  189. 12.2 在目录列表页面上显示一个标准的页头和页脚 239
  190. 12.3 给目录列表应用样式表 240
  191. 12.4 在目录列表中隐藏一些列表项 240
  192. 12.5 在一个目录列表中检索特定文件 241
  193. 12.6 对目录列表进行排序 242
  194. 12.7 允许客户端指定排序顺序 242
  195. 12.8 指定列表的显示格式 244
  196. 12.9 允许客户端指定格式 244
  197. 12.10 给文件增加描述 245
  198. 12.11 自动产生文档标题 245
  199. 12.12 改变列表图标 246
  200. 12.13 把文件夹排在目录列表的最前面 247
  201. 12.14 按照版本号进行排序 248
  202. 12.15 允许最终用户指定使用版本排序 248
  203. 12.16 提供用户完整的输出控制 249
  204. 12.17 不允许最终用户修改列表 250
  205. 12.18 控制特定的列 250
  206. 12.19 显示禁止访问的文件 251
  207. 12.20 目录列表中的别名 252
  208. 第13章 其他主题 253
  209. 13.1 适当地放置指令 253
  210. 13.2 重命名 .htaccess文件 255
  211. 13.3 产生目录/文件夹列表 256
  212. 13.4 解决“结尾斜线”的问题 257
  213. 13.5 根据浏览器的功能设定Content-Type 259
  214. 13.6 处理漏掉的Host标头字段 259
  215. 13.7 替换默认文件 260
  216. 13.8 设置默认的“收藏夹图标(Favicon)” 261
  217. 13.9 允许使用ScriptAlias指令的目录显示列表 261
  218. 13.10 启用.htaccess文件 262
  219. 13.11 把IBM/Lotus的服务器端包含指令转换成Apache上的指令 263
  220. 附录A 在Apache中使用正则表达式 265
  221. A.1 哪些指令会用到正则表达式? 266
  222. 附录B 疑难排解 271
  223. B.1 疑难问题的排解方法 271
  224. B.2 对配置进行调试 272
  225. B.3 对脚本标头的提前结束进行调试 272
  226. B.4 Windows上的常见问题 273
  227. B.5 修改编译时的错误信息 275
  228. B.6 让Server-Side Include能够工作 276
  229. B.7 对产生“找不到文件”错误的重写进行调试 277
  230. B.8 .htaccess 文件没有作用 277
  231. B.9 地址已在使用中 278
  232. 索引 279
书名:Apache Cookbook中文版(第二版)
作者:Ken Coar, Rich Bowen
出版时间:2009年01月
书号:978-7-121-06532-3
原版书出版商:O'Reilly Media
Ken Coar
 
Ken Coar是Apache软件基金会的成员之一,他是《Apache Server for Dummies》(Wiley出版)的作者以及《Apache Server Unleashed》(Sams出版)的合著者。他负责分类发送给Apache项目的邮件,他的邮件列表给本书提供了一个基础。



Ken Coar是Apache软件基金会的主任及副总裁,并且也是IBM公司的资深软件工程师。他在网络软件与应用程序开发、系统管理、系统程序设计、进程分析、技术支持以及计算机安全防护领域已有20年以上的经验。Ken熟悉一打以上的程序语言,但最常以Perl、PHP及C来编写程序。从1992年起,他就从事全球信息网的相关工作,而从1996年起开始Apache的开发工作。Ken目前是计算机学会(Association of Computing Machinery)的会员,而且参与开发CGI的因特网RFC的项目。他是《Apache Server for Dummies》一书的作者,而且也是《Apache Server Unleashed》的作者之一。在http://Ken.Coar.Org/burrow/上有Ken维护的weblog —— “The Rodent's Burrow”。
Ken目前定居于North Carolina,其中的成员还包括一群猫、几台计算机以及满屋子的书籍和影片。其住宅(两层楼的房子)前有一片林地及各种鸟类。他的婚姻生活十分美满,而且已经超过20年了。Ken的妻子是他成功背后的原动力,也是陪伴他共同成长的伴侣。
 
 
Rich Bowen
 
Rich Bowen也是Apache软件基金会的成员之一,主要从事Apache Web server的文档工作。他是《Apache Administrator’s Handbook》以及《Apache Cookbook》第一版的合著者。Rich居住肯塔基州的列克星敦,他业余时间喜欢GeoCaching。他还喜欢放风筝,以及阅读查尔斯?狄更斯及与之相同时代作家的著作。
Rich或者是DrBacchus(Rich在IRC上的名字)在Apache上投入了大量时间。你可以在http://www.drbacchus.com/journal找到他。




Rich Bowen是Apache软件基金会的成员之一,而且时常编写Apache网页服务器的文档。他也是Systems Design Group(www.sdgky.com)的安全防护工程师。该公司位于Kentucky的Lexington。在空闲时(以及必须赶进度时),他都会上网参加寻宝游戏。
 
 
《Apache Cookbook(第2版)》的封面动物是一个驼鹿。驼鹿经常漫步在北美、欧洲以及俄罗斯的森林里。它是鹿家族中最大的种类,而阿拉斯加驼鹿则是驼鹿中体型最大的种类。实际上,驼鹿在阿拉斯加随处可见,它们在阿拉斯加的发展中扮演着重要角色——虽然人类和驼鹿之间的关系存在对抗性。
驼鹿有着很强的繁殖能力,能迅速让一个区域达到饱和。在阿拉斯加伐木和森林大火之后给驼鹿提供了植物嫩芽——高质量的驼鹿食物。不幸的是,当驼鹿吃庄稼、出现在机场、徘徊在街道,以及与汽车和火车相撞,这些事情比较令人烦恼。
但一般情况下,这些野生动物对于州的经济是有好处的。驼鹿是阿拉斯加风景的一个不可分割的部分,当这些动物沿着高速公路觅食时,给了游客拍照的机会。本地和其他州的猎人每年可以猎杀6000到8000头驼鹿——大约350万磅的肉。这些动物在阿拉斯加的未来是相当的光明的,因为人们正在学习如何保护驼鹿的原生态的栖息地,以及如何控制对驼鹿数量的影响因素,例如人类猎杀,以及被狼和熊捕猎。
封面图像是一个来自Illustrated Natural History: Mammalia的原创图案。